Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/282.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在dataframe中除一列(不删除)之外的所有列上填充NaN值_Python_Pandas_Nan - Fatal编程技术网

Python 在dataframe中除一列(不删除)之外的所有列上填充NaN值

Python 在dataframe中除一列(不删除)之外的所有列上填充NaN值,python,pandas,nan,Python,Pandas,Nan,我想用“不可用”字符串为数据帧中的所有列(一列除外)填充NaN值(称为“滞后”) 我试过这个: #fill NaN values with "Not Available" except in "lag" column mydataset_df[mydataset_df.columns.difference(['lag'])].fillna("Not Available", inplace = True) 还有: mydataset_d

我想用“不可用”字符串为数据帧中的所有列(一列除外)填充NaN值(称为“滞后”)

我试过这个:

#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中所有空白值正确填写“不可用”(所以我猜这里的问题是当我选择需要应用命令的列时代码串中的第一部分)

有人能帮我吗?我不想删除“lag”列,我只想留下它,如果有空格,填充所有其他列

提前谢谢

斯蒂法诺

你可以试试这个

for col in mydataset_df.columns:
    if col != 'lag':
        mydataset_df[col].fillna("Not Available", inplace=True)
使用
pop
pd.concat
pop
打开
lag
列,并在其他列中填入
不可用
。最后,合并2

df = pd.concat([df.pop('lag'), df.fillna('Not Available')], axis=1)

第一次尝试显示了一个提示:著名的“一个值正试图在一个数据帧的切片副本上设置”。这是Pandas的一个棘手部分,它试图告诉您您没有使用数据帧本身

在这种情况下,当您在原处省略
时,它会变得更加清晰:

mydataset_df = pd.DataFrame({'lag': [1, 2, 3, pd.NA], 'foo': [2, 4, pd.NA, 8]})
print(mydataset_df[mydataset_df.columns.difference(['lag'])].fillna("Not Available"))

             foo
0              2
1              4
2  Not Available
3              8
fillna
未传递整个数据帧,仅传递对列的引用。这里详细解释了这一点:。简而言之,结果是“不可预测的”。。。确实令人困惑

使用相同的想法,但为了安全起见,您只需将dataframe中的列替换为:

mydataset_df[mydataset_df.columns.difference(['lag'])] = mydataset_df[mydataset_df.columns.difference(['lag'])].fillna("Not Available")

这回答了你的问题吗?非常感谢,成功了!非常感谢菲洛,是的,我收到了那个消息,但一开始我不太明白我错在哪里了……你的解释好多了:)