在 pandas 中填写缺失值错误?

Fill missing values error in pandas?

我有一个包含很多 URL 的数据框。但是,有些丢失了。它基本上是这样的:

import pandas as pd
import numpy as np
csv = [{"url_1" : np.NaN, "url_2" : "https://www.mercedes-benz.de/content/germany/mpc/mpc_germany_website/de/home_mpc/passengercars/home/new_cars/models/mercedes_amg_gt/r190.html"}]

df = pd.DataFrame(csv)

在这种情况下,缺少 url_1。我正在尝试用 url_2 列中的条目替换它。这就是我所做的:

df.url_1 = df.url_1.fillna(df.url_2, inplace=True)

这是结果:

    url_1   url_2
0   None    https://www.mercedes-benz.de/content/germany/m...

我有两个问题:

(1)为什么缺失值没有被替换?

(2) 在原始数据集中我被抛出一个错误:invalid fill value with a <class 'pandas.core.frame.DataFrame'> 数据框看起来完全一样——至少我在上面介绍的小测试中没有得到错误。该错误告诉我什么以及如何消除它?

非常感谢任何帮助!谢谢 /R

如果想要赋值输出,你需要移除inplace,因为如果inplace参数函数return None:

df.url_1 = df.url_1.fillna(df.url_2)
print (df)
                                               url_1  \
0  https://www.mercedes-benz.de/content/germany/m...   

                                               url_2  
0  https://www.mercedes-benz.de/content/germany/m...  

print (df.url_1.fillna(df.url_2, inplace=True))
None

或者不分配和使用inplace:

df.url_1.fillna(df.url_2, inplace=True)
print (df)
                                               url_1  \
0  https://www.mercedes-benz.de/content/germany/m...   

                                               url_2  
0  https://www.mercedes-benz.de/content/germany/m...  

(1) & (2)

您不能使用赋值和关键字 inplace

df['url_1'] = df['url_1'].fillna(df['url_2'])
# or
df['url_1'].fillna(df['url_2'], inplace=True)

这应该可以解决这两个问题。