2 回答

TA貢獻1844條經(jīng)驗 獲得超8個贊
MultiIndex讓我們在數(shù)據(jù)框中創(chuàng)建一個id和date列,然后使用中的相應值Series.fillna填充NaN列中c的值:df1df2
df1['c'] = df1.set_index(['date', 'id'])['c']\
.fillna(df2.set_index(['id', 'date'])['c']).tolist()
date id a b c d
0 1/1/2000 1 10 20 10.0 11
1 1/1/2000 2 11 21 1.0 11
2 1/1/2000 3 15 20 14.0 11
3 1/1/2000 4 12 24 13.0 11
4 1/2/2000 1 10 25 10.0 11
5 1/2/2000 2 10 20 13.0 15
6 1/2/2000 3 10 26 22.0 11
7 1/2/2000 4 10 20 16.0 13
8 1/3/2000 1 10 20 10.0 11
9 1/3/2000 2 10 20 13.0 11
10 1/3/2000 3 10 20 18.0 11
11 1/3/2000 4 10 20 10.0 11

TA貢獻1820條經(jīng)驗 獲得超9個贊
至少在您的示例中,您可以從值列表中填充 NA 值(無需索引)。AKA,?df1
, 的長度始終與缺失值的數(shù)量相同:
df = df.reset_index(drop=True)
df1 = df.reset_index(drop=True)
df.loc[df['c'].isna(), 'c'] = list(df1['c'])
結果:
? ? ? ? date? id? ?a? ?b? ? ?c? ?d
0? ?1/1/2000? ?1? 10? 20? 10.0? 11
1? ?1/1/2000? ?2? 11? 21? ?1.0? 11
2? ?1/1/2000? ?3? 15? 20? 14.0? 11
3? ?1/1/2000? ?4? 12? 24? 13.0? 11
4? ?1/2/2000? ?1? 10? 25? 10.0? 11
5? ?1/2/2000? ?2? 10? 20? 13.0? 15
6? ?1/2/2000? ?3? 10? 26? 22.0? 11
7? ?1/2/2000? ?4? 10? 20? 16.0? 13
8? ?1/3/2000? ?1? 10? 20? 10.0? 11
9? ?1/3/2000? ?2? 10? 20? 13.0? 11
10? 1/3/2000? ?3? 10? 20? 18.0? 11
11? 1/3/2000? ?4? 10? 20? 10.0? 11
添加回答
舉報