gpt4 book ai didi

python - Pandas :使用〜删除数据框的子集

转载 作者:太空宇宙 更新时间:2023-11-04 08:45:26 24 4
gpt4 key购买 nike

我正在尝试根据多种条件过滤数据框。然后,我想从一个单独的、更大的数据框中删除该子集。

df = pd.DataFrame({ 'A' : ['UNKNOWN','UNK','TEST','TEST'],
'E' : pd.Categorical(["test","train","test","train"]),
'F' : 'foo' })

df2 = pd.DataFrame({ 'A' : ['UNKNOWN','UNK','TEST','TEST','UNKOWN','UNKKK'],
'E' : pd.Categorical(["test","train","test","train",'train','train']),
'D' : np.array([3] * 6,dtype='int32'),
'F' : 'foo' })

rgx = r'UNKNOWN|UNK'
df_drop = df.loc[df['A'].str.contains(rgx, na=False, flags=re.IGNORECASE, regex=True, case=False)]
df2 = df2[~df_drop]

我想要 df2 的以下输出:

         A  D      E    F
2 TEST 3 test foo
3 TEST 3 train foo

相反,我收到以下错误:

TypeError: bad operand type for unary ~: 'str'

我不直接过滤 df2 的原因是我想让 df_drop 成为它自己的独立数据框,以便保留我删除的记录。

我想我误解了一元应该如何工作。或者我犯了语法错误。但我找不到它,而且以前的解决方案(例如,removing NaNs from the dataframe)似乎都不适用于这里。

最佳答案

我认为您需要在大数据框中进行过滤:

rgx = r'UNKNOWN|UNK'
mask = df2['A'].str.contains(rgx, na=False, flags=re.IGNORECASE, regex=True, case=False)
print (mask)
0 True
1 True
2 False
3 False
4 True
5 True
Name: A, dtype: bool

print (df2[~mask])
A D E G
2 TEST 3 test foo
3 TEST 3 train foo

关于python - Pandas :使用〜删除数据框的子集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41246747/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com