如何根据条件在熊猫中删除行

时间:2020-04-14 21:15:48

标签: python pandas

我正在尝试在熊猫数据框中删除一些行,但出现此错误:SettingWithCopyWarning:试图在DataFrame的切片副本上设置一个值。

我有一个要保留在数据框中的所需项目的列表,所以我这样写:

import sys
import pandas as pd

biog = sys.argv[1]

df = pd.read_csv(biog, sep ='\t')

desired = ['Affinity Capture-Luminescence', 'Affinity Capture-MS', 'Affinity Capture-Western', 'Co-crystal Structure', 'Far Western', 'FRET', 'PCA', 'Reconstituted Complex']

new_df = df[['OFFICIAL_SYMBOL_A','OFFICIAL_SYMBOL_B','EXPERIMENTAL_SYSTEM']]


for i in desired:
    print(i)
    new_df.drop(new_df[new_df.EXPERIMENTAL_SYSTEM != i].index, inplace = True)
print(new_df)

如果我一次放置一个条件,它会起作用,但是当插入for循环时,它将不起作用。

我没有在这里放置数据,因为它太大了,我希望这足够了。

感谢您的帮助

1 个答案:

答案 0 :(得分:1)

您可以为列在值列表中的时间设置新的df。无需循环。

new_df = new_df[new_df['EXPERIMENTAL_SYSTEM'].isin(desired)]