我正在尝试在熊猫数据框中删除一些行,但出现此错误: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循环时,它将不起作用。
我没有在这里放置数据,因为它太大了,我希望这足够了。
感谢您的帮助
答案 0 :(得分:1)
您可以为列在值列表中的时间设置新的df。无需循环。
new_df = new_df[new_df['EXPERIMENTAL_SYSTEM'].isin(desired)]