相关疑难解决方法(0)

如何为Pandas数据帧实现'in'和'not in'

我怎样才能实现SQL的的等价物INNOT 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.任何人都可以改进吗?

python sql-function dataframe pandas

353
推荐指数
9
解决办法
34万
查看次数

pandas使用startswith从Dataframe中选择

这工作(使用Pandas 12 dev)

table2=table[table['SUBDIVISION'] =='INVERNESS']
Run Code Online (Sandbox Code Playgroud)

然后我意识到我需要使用"开头"来选择字段因为我错过了一堆.所以按照我可以遵循的熊猫文档,我试过了

criteria = table['SUBDIVISION'].map(lambda x: x.startswith('INVERNESS'))
table2 = table[criteria]
Run Code Online (Sandbox Code Playgroud)

并得到了AttributeError:'float'对象没有属性'startswith'

所以我尝试了一种具有相同结果的替代语法

table[[x.startswith('INVERNESS') for x in table['SUBDIVISION']]]
Run Code Online (Sandbox Code Playgroud)

参考http://pandas.pydata.org/pandas-docs/stable/indexing.html#boolean-indexing 第4部分:系列的列表推导和映射方法也可用于生成更复杂的标准:

我错过了什么?

python numpy pandas

39
推荐指数
4
解决办法
4万
查看次数

如何选择列值以某个字符串开头的行?

如何选择列值以某个字符串开头的行?

例如,我想选择"name"列以"Mr."开头的行.

sql sqlite

29
推荐指数
1
解决办法
5万
查看次数

标签 统计

pandas ×2

python ×2

dataframe ×1

numpy ×1

sql ×1

sql-function ×1

sqlite ×1