在处理csv文件的原始代码中,我从包含特定值的行中跳过数据:
df = df[df["ORGANIZATION"]!="Org1"]
现在我需要跳过包含该值的数据。以下确定它是否包含值...
df = df[df["ORGANIZATION"].str.contains("Org1")]
但我如何否定那些隐藏这些价值观呢?某些值可能是“Org1 - Dave”或“Org1 - Lisa”。如何跳过值中某处包含“Org1”的数据?
我一直在搜索,但不能正确地说出我的问题以找到正确的答案。
答案 0 :(得分:3)
您可以使用~
否定您的布尔系列:
>>> df = pd.DataFrame({"ORGANIZATION": ["Org1", "Org1 - Dave", "Org1 - Lisa", "Org2 - Bob", "Org3 - Sally"]})
>>> df
ORGANIZATION
0 Org1
1 Org1 - Dave
2 Org1 - Lisa
3 Org2 - Bob
4 Org3 - Sally
[5 rows x 1 columns]
>>> df[df["ORGANIZATION"].str.contains("Org1")]
ORGANIZATION
0 Org1
1 Org1 - Dave
2 Org1 - Lisa
[3 rows x 1 columns]
>>> df[~df["ORGANIZATION"].str.contains("Org1")]
ORGANIZATION
3 Org2 - Bob
4 Org3 - Sally
[2 rows x 1 columns]
请注意,您还可以使用groupby
来分割帧:
>>> gg = df.groupby(df["ORGANIZATION"].str.contains("Org1"))
>>> for k,g in gg:
... print k
... print g
...
False
ORGANIZATION
3 Org2 - Bob
4 Org3 - Sally
[2 rows x 1 columns]
True
ORGANIZATION
0 Org1
1 Org1 - Dave
2 Org1 - Lisa
[3 rows x 1 columns]