我想在包含给定字符串的数据帧(“类别”)中查找列的名称。categories Groceries Electricity Fastfood Parking 0 SHOP ELCOMPANY MCDONALDS park1 MARKET ELECT Subway car2 market electr Restauran 247 假设我想在整个数据框中搜索字符串“MCDO”。答案应该是“快餐”。我尝试使用 str.contains 但它似乎不适用于数据帧。我怎样才能做到这一点?谢谢你。
3 回答
![?](http://img1.sycdn.imooc.com/545845d30001ee8a02200220-100-100.jpg)
青春有我
TA贡献1784条经验 获得超8个赞
如果您可以搜索整个字符串,那就更容易了,
(df == 'MCDONALDS').any().idxmax()
否则使用申请,
df.apply(lambda x: x.str.startswith('MCDO').any()).idxmax()
![?](http://img1.sycdn.imooc.com/5f33c0c90001f9ad05720572-100-100.jpg)
白衣非少年
TA贡献1155条经验 获得超0个赞
也可以for为此使用循环:
def strfinder(df, mystr):
for col in df:
for item in df[col]:
if mystr in item:
return col
print(strfinder(df, 'MCDO'))
要获取可能包含字符串的所有列,例如在下面修改后的数据框中:
Groceries Electricity Fastfood Parking
0 SHOP ELCOMPANY MCDONALDS park
1 MARKET MCDON Subway car
2 market electr Restauran 247
可以使用“列表理解”:
mystr = 'MCDO'
outlist = [ col
for col in df
for item in df[col]
if mystr in item ]
print(outlist)
输出:
['Electricity', 'Fastfood']
![?](http://img1.sycdn.imooc.com/533e4c1500010baf02200220-100-100.jpg)
翻翻过去那场雪
TA贡献2065条经验 获得超13个赞
或使用:
print(df.apply(lambda x: x.str.contains('MCDO')).replace(False,np.nan).dropna(axis=1,how='all').columns.item())
输出:
Fastfood
添加回答
举报
0/150
提交
取消