我是python的新手,我有时会对某些操作感到困惑
我有一个名为ro
的数据框,我还使用特定列PN 3D
对特定值921
过滤了此数据帧,并将结果分配到名为{{1}的新数据框中使用以下代码:
headlamp
我的头灯是数据框还是只是切片? 我问这个的原因是因为我的脚本后面会收到一些奇怪的警告和结果。
例如,我创建了一个名为 headlamp = ro[ro['PN 3D']=="921"]
的新列,并将其分配到word
headlamp
我收到了以下警告:
headlamp['word'] = ""
之后我使用以下脚本将结果分配给 A value is trying to be set on a copy of a slice from a DataFrame
headlamp['word']
出现了相同的警告并且它对我的结果产生了影响,因为当我使用 i = 0
for row in headlamp['Comment'].astype(list):
headlamp['word'][i] = Counter(str(row).split())
i+=1
print headlamp['word']
时,headlamp.tail()
的最后一行是空的。
有没有人知道问题是什么以及如何解决?
任何帮助都将受到高度赞赏
答案 0 :(得分:1)
使用.loc
headlamp = ro.loc[ro['PN 3D']=="921"]
关于其余部分和你的意见......我很困惑。但这是我最好的猜测
设置
import pandas as pd
from string import ascii_lowercase
chars = ascii_lowercase + ' '
probs = [0.03] * 26 + [.22]
headlamp = pd.DataFrame(np.random.choice(list(chars), (10, 100), p=probs)).sum(1).to_frame('comment')
headlamp
headlamp['word'] = headlamp.comment.str.split().apply(lambda x: pd.value_counts(x).to_dict())
headlamp