如何将一片数据帧转换为新的数据帧

时间:2016-10-16 21:59:34

标签: python pandas dataframe slice

我是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()的最后一行是空的。

有没有人知道问题是什么以及如何解决?

任何帮助都将受到高度赞赏

1 个答案:

答案 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

enter image description here

headlamp['word'] = headlamp.comment.str.split().apply(lambda x: pd.value_counts(x).to_dict())
headlamp

enter image description here