【发布时间】:2019-03-04 07:04:01
【问题描述】:
我相信有一个简单的问题。我有一个熊猫数据框 df 看起来与此非常相似:
data = [{"Text" : "Dog", "Dog" : 1},
{"Text" : "Cat", "Dog" : 0},
{"Text" : "Mouse", "Dog" : 0},
{"Text" : "Dog", "Dog" : 1}]
df = pd.DataFrame(data)
我正在尝试在 Text 列中搜索多个关键字,并计算它们在每个单元格中出现的次数。结果应该存储在一个新列中,该列显示找到特定关键字的次数。结果应该就像Dog 列一样。
我尝试使用 pandas str.count。它工作得很好。但是在我尝试将结果存储在新列中的那一刻,我遇到了麻烦:
mykewords = ('Cat', 'Mouse')
df['Cat'] = df.Text.str.count("Cat")
我收到以下错误消息:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
if __name__ == '__main__':
我有两个问题:
- 我做错了什么,我该如何解决?
- 如何循环遍历
mykeywords中的所有关键字并分别获得一列?
非常感谢您提前提供的任何帮助!
【问题讨论】:
-
你需要
df.Text.str.get_dummies()吗? -
我也这么认为。你可能需要@coldspeed 的建议。
-
Text列中只有一个关键字?或者可能像data = [{"Text" : "Dog Cat", "Dog" : 1}, {"Text" : "Cat Cat", "Dog" : 0}, {"Text" : "Mouse Cat", "Dog" : 0}, {"Text" : "Dog", "Dog" : 1}]? -
@jezrael 是的,多个字符串是可能的。
标签: python-3.x string pandas frequency