簡體   English   中英

如何將特定值從一個 dataframe 填充到另一個 dataframe

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM