我已经创建了一个pandas DataFrame
df = DataFrame(index=['A','B','C'], columns=['x','y'])
Run Code Online (Sandbox Code Playgroud)
得到了这个
x y
A NaN NaN
B NaN NaN
C NaN NaN
然后我想为特定单元格赋值,例如行'C'和列'x'.我期望得到这样的结果:
x y
A NaN NaN
B NaN NaN
C 10 NaN
使用此代码:
df.xs('C')['x'] = 10
Run Code Online (Sandbox Code Playgroud)
但是df的内容没有改变.在数据帧中它只是Nan的.
有什么建议?
我有一个非常简单的问题。我想更改 pandas 数据框给定行的给定列中的值。我尝试通过以下方式做到这一点:
df['column3'].loc[this_date] = val
Run Code Online (Sandbox Code Playgroud)
结果我收到以下警告:
SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
Run Code Online (Sandbox Code Playgroud)
我对此警告的解释是,通过使用列名称 ( 'column3'),loc我并没有真正访问(引用)数据框的所需单元格。相反,我创建一个对象,它是“单元格”对象的副本,然后尝试更改与此“复制对象”关联的值。
我不明白的是它似乎有效。尽管 pandas 写信给我说我尝试修改副本,但我确实修改了原始数据框。
我的问题是如何确保我真的在做我想做的事情以及如何以“正确”的方式去做,这样熊猫就不会抱怨?