尝试.isin()时遇到了一些意外错误 这是问题所在。我已经废弃了网页,变成了数据帧。现在我想进行更改以使数据更适用于项目。 从报废数据中,一列包含所有功能,它是json中的列表,但在pd中,它是“非空对象”:
"feature": ["Wi-Fi", "LAN", "LED"]
我想基于每个功能创建新的布尔列,这将在未来发挥作用。 看起来应该是这样的
Product Wifi LAN LED
1 True True True
2 True False False
我已经尝试了 str.contains 和 .isin(),但只有错误。 如
TypeError: only list-like objects are allowed to be passed to isin(), you passed a [str]
ValueError: Length of values does not match length of index
解决此问题的更好方法是什么?
另外,原始数据是日文的,我用“encoding =”utf-8“加载数据框如何在pandas中使用utf8进行最佳编码?我使用notepad ++作为编辑器。
答案 0 :(得分:2)
如果apply
中需要检查值,则in
与list
一起使用:
df = pd.read_json('sample.json', lines=True, encoding="utf-8")
print (df)
access address feature hour name offday \
0 30 5-17-62 [Wi-Fi, LAN1, Non-smoking] 9:00〜22:00 CHEZ MADU -
1 30 5-17-62 [Wi-Fi, LAN2, Non-smoking] 9:00〜22:00 CHEZ MADU -
2 30 5-17-62 [Wi-Fi, LAN3, Non-smoking] 9:00〜22:00 CHEZ MADU -
tel web
0 042-465-3533 http://www.hakka-group.co.jp/shoplist/
1 042-465-3533 http://www.hakka-group.co.jp/shoplist/
2 042-465-3533 http://www.hakka-group.co.jp/shoplist/
mask = df['feature'].apply(lambda x: 'LAN1' in x)
print (mask)
0 True
1 False
2 False
Name: feature, dtype: bool