我有一個非常大的數據框在python中,我想刪除所有具有特定字符串內的特定字符串的行。如何從包含特定列中特定字符串的熊貓數據框中刪除行?
例如,我想刪除所有具有字符串「XYZ」的行作爲數據框C列中的子字符串。
這可以使用.drop()方法以有效的方式實現嗎?
我有一個非常大的數據框在python中,我想刪除所有具有特定字符串內的特定字符串的行。如何從包含特定列中特定字符串的熊貓數據框中刪除行?
例如,我想刪除所有具有字符串「XYZ」的行作爲數據框C列中的子字符串。
這可以使用.drop()方法以有效的方式實現嗎?
大熊貓已矢量字符串操作,所以你可以過濾掉包含字符串的行你不想:
In [91]: df = pd.DataFrame(dict(A=[5,3,5,6], C=["foo","bar","fooXYZbar", "bat"]))
In [92]: df
Out[92]:
A C
0 5 foo
1 3 bar
2 5 fooXYZbar
3 6 bat
In [93]: df[df.C.str.contains("XYZ") == False]
Out[93]:
A C
0 5 foo
1 3 bar
3 6 bat
如果字符串約束不只是一個字符串,你可以將這些相應的行搭配:
df = df[~df['your column'].isin(['list of strings'])]
以上將丟棄包含列表
的元素本,如果你想比較確切的字符串只會工作的所有行。 如果您想檢查列字符串是否包含列表中的任何字符串,它將不起作用。 與列表進行比較正確的做法應該是:
searchfor = ['john', 'doe']
df = df[~df.col.str.contains('|'.join(searchfor))]
雖然你寫的是正確的,更具可讀性,更短的方法是:'DF [〜df.C.str.contains(「XYZ」) ]' – EdChum 2015-02-23 17:58:16