我怎样才能实现SQL的的等价物IN和NOT IN?
我有一个包含所需值的列表.这是场景:
df = pd.DataFrame({'countries':['US','UK','Germany','China']})
countries = ['UK','China']
# pseudo-code:
df[df['countries'] not in countries]
Run Code Online (Sandbox Code Playgroud)
我目前的做法如下:
df = pd.DataFrame({'countries':['US','UK','Germany','China']})
countries = pd.DataFrame({'countries':['UK','China'], 'matched':True})
# IN
df.merge(countries,how='inner',on='countries')
# NOT IN
not_in = df.merge(countries,how='left',on='countries')
not_in = not_in[pd.isnull(not_in['matched'])]
Run Code Online (Sandbox Code Playgroud)
但这似乎是一个可怕的kludge.任何人都可以改进吗?
看起来很难看:
df_cut = df_new[
(
(df_new['l_ext']==31) |
(df_new['l_ext']==22) |
(df_new['l_ext']==30) |
(df_new['l_ext']==25) |
(df_new['l_ext']==64)
)
]
Run Code Online (Sandbox Code Playgroud)
不起作用:
df_cut = df_new[(df_new['l_ext'] in [31, 22, 30, 25, 64])]
Run Code Online (Sandbox Code Playgroud)
是否有上述"问题"的优雅和有效解决方案?
我是python的新手,遇到了代码片段.
df = df[~df['InvoiceNo'].str.contains('C')]
Run Code Online (Sandbox Code Playgroud)
如果我能知道在这种情况下波形符号的用法是什么,那将是非常有必要的吗?