在pandas中填写缺失值错误?

时间:2017-08-08 12:43:49

标签: python python-3.x pandas error-handling missing-data

我有一个包含很多网址的数据框。但是,有些人不见了。它基本上是这样的:

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

2 个答案:

答案 0 :(得分:2)

如果要分配输出,则需要删除inplace,因为如果inplace参数函数返回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 :(得分:1)

(1)&amp; (2)

您无法使用分配和关键字inplace

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

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