![](/img/trans.png)
[英]How to fill column in pandas.DataFrame using data from another pandas.DataFrame?
[英]Fill NaNs of pandas.DataFrame based on condition over another column
我想根據另一列的條件替換 DataFrame 的一列中的 NaN。 如果在列[0]
中有“乘客公里”,我想在該行用值“總客運量”填充另一列[1]
的 NaN,如下面df
的索引 14 所示(有替代對於其他 NaN,請參閱下面的映射totals_dict
)。 如果在下面嘗試了這個循環,它在每種情況下都有效,但我想找到一個更優雅的解決方案。
totals_dict = {"Passenger-Kilometers": "Total passenger transport",
"Freight Ton-Kilometers": "Total freight transport",}
for key, value in totals_dict.items():
df[df[0] == key] = df[df[0] == key].fillna(value)
有沒有更干凈、不同的方法來解決這個問題?
或者,我試過:
df = df.groupby(0).assign(target_col=lambda group: group["target_col"].fillna(totals_dict.get(group[0])))
但不幸的是groupby
對象不接受assign
作為方法。
df
如下:
0 1
1 Vehicle Stock Medium Trucks(10000 units)
2 Vehicle Stock Heavy Trucks(10000 units)
3 Vehicle Stock Trucks(10000 units)
4 Vehicle Stock Mini Passenger Vehicles(10000 units)
5 Vehicle Stock Small Passenger Vehicles(10000 units)
6 Vehicle Stock Medium Passenger Vehicles(10000 units)
7 Vehicle Stock Light Trucks(10000 units)
8 Vehicle Stock Large Passenger Vehicles(10000 units)
9 Vehicle Stock Civil Vehicles(10000 units)
10 Passenger-Kilometers Civil Aviation(100 million passenger-km)
11 Passenger-Kilometers Waterways(100 million passenger-km)
12 Passenger-Kilometers Highways(100 million passenger-km)
13 Passenger-Kilometers Railways(100 million passenger-km)
14 Passenger-Kilometers None
15 Vehicle Stock Passenger Vehicles(10000 units)
謝謝!
假設我有這個 dataframe:
>>> a
0 1
0 Passenger-Kilometers Civil Aviation(100 million passenger-km)
1 Passenger-Kilometers Waterways(100 million passenger-km)
2 Passenger-Kilometers None
3 Passenger-Kilometers None
4 Passenger-Kilometers None
然后我可以運行以下命令:
def b(x):
x[1] = "hello"
return x
a[(a[0] == "Passenger-Kilometers") & (a[1].isnull())] = a[(a[0] == "Passenger-Kilometers") & (a[1].isnull())].apply(b, axis=1)
現在,如果我看:
>>> a
0 1
0 Passenger-Kilometers Civil Aviation(100 million passenger-km)
1 Passenger-Kilometers Waterways(100 million passenger-km)
2 Passenger-Kilometers hello
3 Passenger-Kilometers hello
4 Passenger-Kilometers hello
所以你可以用你需要的任何東西替換“你好”
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.