我想填补NaN值与“不可用”字符串的所有列在我的dataframe除了一列(即命名为“滞后”)
我试过这个:
#fill NaN values with "Not Available" except in "lag" column
mydataset_df[mydataset_df.columns.difference(['lag'])].fillna("Not Available", inplace = True)
还有这个
mydataset_df.loc[ : , mydataset_df.columns != 'lag'].fillna("Not Available", inplace = True)
我得到的是同样的结果:当为空时,没有列填充“不可用”。但如果我执行:
mydataset.fillna("Not Available", inplace = True)
我得到df中的所有空白值都正确地填充了“不可用”(所以我猜这里的问题是当我选择需要应用命令的列时代码字符串中的第一部分)
有人能帮帮我吗?我不想删除“滞后”列,我只想留下它,并填写所有其他列,如果有空白。
先谢谢你了
斯特凡诺
3条答案
按热度按时间g6baxovj1#
使用
pop
和pd.concat
:pop
lag
列,并在其他列中用Not Available
填充NAN。最后,合并2。col17t5w2#
你可以试试这个
wgx48brx3#
第一次尝试显示一个提示:著名的“A value is trying to be set on a copy of a slice from a DataFrame”。这是Pandas的一个棘手的部分,它试图告诉你你不是在处理数据框本身。
在这种情况下,省略
inplace
会更清楚:fillna
没有传递整个 Dataframe ,只传递了对列的引用。这里有详细的解释:https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy。简而言之,结果是“不可预测的”...肯定很困惑使用相同的想法,但为了安全起见,您可以将dataframe中的列替换为: