使用具有特殊条件的CSV文件中的pandas提取数据

时间:2016-08-05 21:16:56

标签: csv pandas filtering

这是我拥有的数据的例子

1, "dep, anxiety", 30 
2, "dep"         , 40
4, "stress"      , 30
7, "dep, fobia"  , 20

我想使用pandas来过滤具有" dep"并将其保存在新的cvs文件中。输出应该是:

1, "dep, anxiety", 30
7, "dep, fobia"  , 20
2, "dep"         , 40

这是我的代码:

import pandas as pd
patients =  pd.read_csv("patients.csv", encoding='latin-1')

print(patients["dep" in patients["qual"]])

有以下错误

"return self._engine.get_loc(self._maybe_cast_indexer(key))"

我不知道如何将提取的数据导出到新的csv文件。

1 个答案:

答案 0 :(得分:1)

你可以这样做:

In [213]: patients
Out[213]:
   ID           dis  rank
0   1  dep, anxiety    30
1   2           dep    40
2   4        stress    30
3   7    dep, fobia    20

In [214]: patients[(patients['dis'].str.contains('dep')) & (patients['rank'] == 30)]
Out[214]:
   ID           dis  rank
0   1  dep, anxiety    30

PS rank是一个pandas方法,所以你不能使用点列(df.column_name)访问器,因为pandas会认为你正在调用NDFrame.rank方法:

演示:

这里我们称之为NDFrame.rank方法的引用:

In [215]: patients.rank
Out[215]:
<bound method NDFrame.rank of    ID           dis  rank
0   1  dep, anxiety    30
1   2           dep    40
2   4        stress    30
3   7    dep, fobia    20>

我们在此致电rank栏:

In [216]: patients['rank']
Out[216]:
0    30
1    40
2    30
3    20
Name: rank, dtype: int64