Python 如何仅填充dataframe中选定列的空值?
我的dataframe由多个具有NaN值的列组成。我只想将特定列(列名:MarkDown1)的NaN值替换为0 我写的声明是:Python 如何仅填充dataframe中选定列的空值?,python,pandas,Python,Pandas,我的dataframe由多个具有NaN值的列组成。我只想将特定列(列名:MarkDown1)的NaN值替换为0 我写的声明是: data1.loc[:,['MarkDown1']] = data1.loc[:,['MarkDown1']].fillna(0) 我的声明提出警告: C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:965: SettingWithCopyWarning: A va
data1.loc[:,['MarkDown1']] = data1.loc[:,['MarkDown1']].fillna(0)
我的声明提出警告:
C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\indexing.py:965: SettingWithCopyWarning:
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: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
self.obj[item] = s
我请求不要将我的问题标记为重复问题,因为我已经参考了文档和以前的问题,并尝试实施给出的建议。建议使用.loc。我只在上面提到的代码中使用了.loc。但我还是得到了警告。请建议正确的语法以消除警告。问题的根源是您创建了data1 作为另一个数据帧的视图 结果是:
- data1是一个单独的数据帧
- 但它与另一个(源)数据帧共享其数据缓冲区
Xxx MarkDown1
0 1 10.0
1 2 20.0
2 3 NaN
3 4 30.0
4 5 40.0
data1=df[df.Xxx<5]
当然,data1现在包含(实际显示)前4行
来自dfdata1 = df[df.Xxx < 5].copy()
data1=df[df.Xxx<5]。复制()
这一次,当您运行指令时,不会发生错误。Try
data1['MarkDown1']=data1['MarkDown1'].fillna(0)
Try,data1.loc[data1['MarkDown1'].isnull(),'MarkDown1']=0@Sociopath还有佐伊。尝试了这些建议,但仍然收到警告。您可以只分配给df:df=df.fillna({'MarkDown1':0})。“把它当作字典传过来好主意,”新的傻瓜补充道,“是的,你是对的。”。感谢您提供的见解。
data1 = df[df.Xxx < 5].copy()