我有一个包含很多网址的数据框。但是,有些人不见了。它基本上是这样的:
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
答案 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)
这应该可以解决这两个问题。