Python 如何找到将列拆分为两个新列的行?
我正在处理一个数据框架,试图清理一些东西,但遇到了一些不寻常的元素。两个测试值在下面发布的相同结果列中表示。我想将CRP组分为另外两列,暂定标题为“CRP_mgml”和“CRP_Result”,但我不确定如何找到我的IL6行结束和CRP行开始的位置。我有一种感觉,我可以使用正则表达式函数来解析,但我对这一点非常陌生,所以需要一些帮助。先谢谢你Python 如何找到将列拆分为两个新列的行?,python,regex,data-analysis,data-cleaning,Python,Regex,Data Analysis,Data Cleaning,我正在处理一个数据框架,试图清理一些东西,但遇到了一些不寻常的元素。两个测试值在下面发布的相同结果列中表示。我想将CRP组分为另外两列,暂定标题为“CRP_mgml”和“CRP_Result”,但我不确定如何找到我的IL6行结束和CRP行开始的位置。我有一种感觉,我可以使用正则表达式函数来解析,但我对这一点非常陌生,所以需要一些帮助。先谢谢你 df2[['Group_Id', 'Result']] Out[46]:
df2[['Group_Id', 'Result']]
Out[46]:
Group_Id Result
0 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
1 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
2 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
3 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 392.0
4 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
5 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
6 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
7 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
**8 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
9 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 328.0
10 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
11 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
12 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
13 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
14 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
15 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 400.0
16 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 70.9
17 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 3.4
18 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 2.6
19 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 1.9
20 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 30.0
21 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 19.3
22 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 39.4
23 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 17.0
24 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 36.9
25 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 2.6
26 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 10.4
27 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 3.4
28 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 11.3
29 LAB\(LLB63) DBNull\(LLB64) DBNull\INTERL6\BCIL... 281.0
... ...
4558 CRP (mg/L) 1.5
4559 CRP (mg/L) 2.0
4560 CRP (mg/L) 5.3
4561 CRP (mg/L) 0.8
4562 CRP (mg/L) 1.2
4563 CRP (mg/L) 2.0
4564 CRP (mg/L) 2.6
4565 CRP (mg/L) 3.1
4566 CRP (mg/L) 3.9
4567 CRP (mg/L) 5.5
4568 CRP (mg/L) 7.8
4569 CRP (mg/L) 13.0
4570 CRP (mg/L) 20.2
4571 CRP (mg/L) 25.0
4572 CRP (mg/L) 24.8
4573 CRP (mg/L) 42.3
4574 CRP (mg/L) 71.0
4575 CRP (mg/L) 171.2
4576 CRP (mg/L) 271.6
4577 CRP (mg/L) 289.0
4578 CRP (mg/L) 148.7
4579 CRP (mg/L) 77.3
4580 CRP (mg/L) 69.0
4581 CRP (mg/L) 68.5
4582 CRP (mg/L) 69.7
4583 CRP (mg/L) 125.5
4584 CRP (mg/L) 41.9
4585 CRP (mg/L) 12.9
4586 CRP (mg/L) 4.1
4587 CRP (mg/L) 10.9
[4588 rows x 2 columns]**
无法使用
.split()
进行拆分吗
看起来所有CRP行的组ID都相同。如果这是真的,您可以基于组id创建2个新数据帧 它看起来像:
crpDF = df2[df2.Group_Id == "CRP (mg/L)"]
il6DF = df2[~(df2.Group_Id == "CRP (mg/L)")]
波浪线(~)是一个否定符号,因此它将取(df.Group_Id=='CRP(mg/L)')返回的序列,并返回相反的序列
我喜欢这个解决方案,因为它不依赖于正在排序的df。它对crp组很有效,但是使用否定符号返回了一个错误“一元操作数的操作数类型错误:str”。很抱歉,我忘了把它放在括号中。我已经更新了代码片段。
crpDF = df2[df2.Group_Id == "CRP (mg/L)"]
il6DF = df2[~(df2.Group_Id == "CRP (mg/L)")]