分离csv文件并过滤数据

2024-06-07 00:24:09 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个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满足条件,应该被提取


Tags: 文件csv数据代码id情况codeac
1条回答
网友
1楼 · 发布于 2024-06-07 00:24:09

更新:

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

旧答案:

这就是你想要的吗

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

相关问题 更多 >