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

Python 如何将数据帧片段转换为新的数据帧,python,pandas,dataframe,slice,Python,Pandas,Dataframe,Slice,我是python新手,有时会对一些操作感到困惑 我有一个名为ro的数据框,我还使用特定列PN 3D对该数据框进行了过滤,以获得特定值921,并使用以下代码将结果分配到名为Headlight的新数据框中: headlamp = ro[ro['PN 3D']=="921"] 我的前照灯是否也是一个数据框,还是只是一个切片? 我问这个问题的原因是因为我的脚本稍后会收到一些奇怪的警告和结果 例如,我创建了一个名为word的新列,并将其分配给headlamp headlamp['word'] = "

我是python新手,有时会对一些操作感到困惑 我有一个名为
ro
的数据框,我还使用特定列
PN 3D
对该数据框进行了过滤,以获得特定值
921
,并使用以下代码将结果分配到名为
Headlight
的新数据框中:

 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
之后,我使用以下脚本将结果分配给
headlight['word']

 i = 0
 for row in headlamp['Comment'].astype(list):
     headlamp['word'][i] = Counter(str(row).split())
 i+=1
 print headlamp['word']
出现了相同的警告,并影响了我的结果,因为当我使用
headlamp.tail()
时,
headlamp['word']
的最后几行是空的

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

我们将非常感谢您的帮助

使用
.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=ro[ro['PN 3D']==“921”].copy()
如果
headlamp
是一个数据帧,则您应该为列分配一个
系列
对象,而不仅仅是一个空字符串。类似于前照灯['word']=pd.Series(…)感谢您的回复。我使用了这个
.copy()
,并且在@MaxU上有相同的警告和错误。关于您的回复@TammoHeeren,我也为列
word
中的所有行分配了0个值,但是在我应用脚本后,
I=0表示前照灯中的行['Comment']:前照灯['word'][I]=(计数器(str(row).split())I+=1打印前照灯['word']I=0表示前照灯中的行['Comment']:前照灯['word'[I]=(计数器(str(row.split())i+=1个打印前照灯['word']
我遇到了与上面描述的相同的问题,脚本没有应用到我的数据框
Headlight
中的所有行。你们现在知道为什么了吗?谢谢@piRSquared,它似乎与
有关。loc
已经处理了警告,但我仍然面临一个问题,如果您能提供帮助,我将不胜感激。'I=0表示Headlight中的行['Comment']:headlight.loc[i,'word']=(计数器(str(row).split())i+=1打印头灯['word']`我有以下错误:
ValueError:在使用iterable设置时必须具有相等的len键和值
您知道哪里可能有问题吗?让我再次为headlight['Comment']中的行编写脚本
i=0:headlight.loc[i,'word']=(计数器(str(row).split())i+=1
我正试图通过计算我的每一行的
注释
列中每个单词的出现次数,在
单词
列上创建一个词典dataframe@RafaelRodriguesSantos我试着弄明白你的意思。希望我的编辑能帮上忙。非常感谢你的支持
headlamp['word'] = headlamp.comment.str.split().apply(lambda x: pd.value_counts(x).to_dict())
headlamp