我有一个csv文件,其数据如下
id^code^result1^result2
AXY-C-5567^AXY^1.0^1.0
RFD-A-3456^RFD^9^8
SAD-AC-4563^SAD^4^6.7
ASE-A-4567^ASE^7.3^2.7
DER-C-3256^DER^5.5^3
如果在python中id是A而不是C或AC,如何提取第二,第三和第四列?在这种情况下,代码:RFD,ASE满足条件,应该被提取。
答案 0 :(得分:0)
<强>更新强>
In [157]: pd.read_csv(r'/path/to/file.csv', sep='^', usecols=[0,1]) \
.query("id.str.contains('-A-')", engine='python').iloc[:, 1]
Out[157]:
1 RFD
3 ASE
Name: code, dtype: object
In [208]: pd.read_csv(r'/path/to/file.csv', sep='^') \
.query("id.str.contains('-A-')", engine='python').iloc[:, [1,2,3]]
Out[208]:
code result1 result2
1 RFD 9.0 8.0
3 ASE 7.3 2.7
OLD回答:
这就是你想要的吗?
In [149]: df
Out[149]:
id code result1 result2
0 AXY-C-5567 AXY 1.0 1.0
1 RFD-A-3456 RFD 9.0 8.0
2 SAD-AC-4563 SAD 4.0 6.7
3 ASE-A-4567 ASE 7.3 2.7
4 DER-C-3256 DER 5.5 3.0
In [150]: df.loc[df.id.str.contains(r'-A-'), 'code']
Out[150]:
id code result1 result2
1 RFD-A-3456 RFD 9.0 8.0
3 ASE-A-4567 ASE 7.3 2.7
只有第二栏:
In [151]: df.loc[df.id.str.contains(r'-A-'), 'code']
Out[151]:
1 RFD
3 ASE
Name: code, dtype: object