[英]How to fill specific values from one dataframe to another dataframe
我有一個更大的 dataframe ( A ) 和一個較小的 dataframe ( B )。
A(更大的dataframe)
from val null
Abc_1 45 76
Abc_2 46 77
Abc_3 47 78
Abc_4 48 79
Abc_5 49 80
Abc_6 50 81
Abc_7 51 82
Abc_8 52 83
Abc_9 53 84
Abc_10 54 85
.
.
.
B(較小的數據框)
from null
Abc_3 3
Abc_8 3
Abc_4 5
Abc_1 2
Abc_6 4
.
.
.
“從”列是 dataframe 的索引。 B dataframe 的“發件人”是 A 數據幀的“發件人”的子集,但它是雜亂無章的(與 A dataframe 的順序不同。)
我想做一些操作,將各行的 B 數據框的“null”替換為 A dataframe 的“null”
所以生成的 dataframe output 應該看起來像這樣。
from val null
Abc_1 45 2
Abc_2 46 77
Abc_3 47 3
Abc_4 48 5
Abc_5 49 80
Abc_6 50 4
Abc_7 51 82
Abc_8 52 3
Abc_9 53 84
Abc_10 54 85
.
.
.
使用Series.map
by Series
from B
by select null
列替換原始列 by Series.fillna
的不匹配值:
A['null'] = A.index.to_series().map(B['null']).fillna(A['null']).astype(int)
print (A)
val null
from
Abc_1 45 2
Abc_2 46 77
Abc_3 47 3
Abc_4 48 5
Abc_5 49 80
Abc_6 50 4
Abc_7 51 82
Abc_8 52 3
Abc_9 53 84
Abc_10 54 85
或者使用DataFrame.pop
DataFrame.merge
列和Series.fillna
:
注意:如果需要處理多個列,此解決方案會更好。
df = A.merge(B, on='from', how='left', suffixes=('','_'))
df['null'] = df.pop('null_').fillna(df['null']).astype(int)
print (df)
val null
from
Abc_1 45 2
Abc_2 46 77
Abc_3 47 3
Abc_4 48 5
Abc_5 49 80
Abc_6 50 4
Abc_7 51 82
Abc_8 52 3
Abc_9 53 84
Abc_10 54 85
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.