【发布时间】:2016-12-12 09:05:55
【问题描述】:
这是我拥有的数据示例
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 文件。
【问题讨论】:
-
试试这个:
patients[patients.qual.str.contains('dep')].to_csv('c:/temp/dep.csv', index=False) -
不是重复的。 OP 想知道如何在写入 CSV 之前提取包含
'dep'的行。 -
@MaxU,这是一个答案;)。我认为较新的 Pandas 版本也支持像这样传递
lambdas:df[lambda row: "dep" in row["qual"]],但目前无法尝试。 -
@filmor,是的,较新的 pandas 版本确实支持可调用索引,但我认为
patients.qual.str.contains('dep')在更大的数据集上应该更快...