单独的csv文件并过滤数据

时间:2017-05-02 20:22:24

标签: python csv pandas

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

1 个答案:

答案 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