我有一个 pandas 数据框,其中一些行数据以数字结尾,我需要拆分这些行中的结束数字并仅将这些数字移动到右边的列。
下面是一个示例 df:
check_df = pd.DataFrame({
'Test': ["Absolute Neutrophil Count","Absolute Lymphocyte Count 2.9","Absolute Neutrophil Count"],
'Result1': [6.56,2.8,5.5],
'Result2': [5.14,2.6,4.8],
'Result3': [4.69,"10~9/L",5.2],
'Unit': ["10~9/L","1.0-3.0","10~9/L"],
'Range': ["4.0-10.0",None,"4.0-10.0"]
})
check_df
Test Result1 Result2 Result3 Unit Range
0 Absolute Neutrophil Count 6.56 5.14 4.69 10~9/L 4.0-10.0
1 Absolute Lymphocyte Count 2.9 2.80 2.60 10~9/L 1.0-3.0 None
2 Absolute Neutrophil Count 5.50 4.80 5.2 10~9/L 4.0-10.0
我尝试使用以下正则表达式代码来找出以数字结尾的“测试”行:
check_df.iloc[:,0].str.contains(r'\d+$')
期望结果:
Test Result1 Result2 Result3 Unit Range
0 Absolute Neutrophil Count 6.56 5.14 4.69 10~9/L 4.0-10.0
1 Absolute Lymphocyte Count 2.9 2.80 2.60 10~9/L 1.0-3.0
2 Absolute Neutrophil Count 5.50 4.80 5.2 10~9/L 4.0-10.0
疑问: 但我不确定如何仅根据索引或其他方法拆分那些行,以便所有行/列数据都可以采用正确对齐的数据表格式。
最好的办法是首先正确读取您的输入以避免错误。
也就是说,您可以使用
extract
数字并识别不正确的行notna
,然后shift
和update
:输出:
请注意,这不会神奇地修复数据类型。
另一种方法可能是导出为 CSV,用正则表达式修复第一列并重新导入数据:
正则表达式演示
产量和中间体: