我想从一个 Dataframe (df2)到另一个 Dataframe (df1)写入一系列 Dataframe ('b'
)。两个 Dataframe 使用相同的索引列,但df2
的索引范围有点远,它缺少df1
的一些索引。
这是当前的行为:
>>> import pandas as pd
>>> pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
a b
0 1 4
1 2 5
2 3 6
>>>
>>> df = pd.DataFrame({'a': [1, 2, 3], 'b': [4, 5, 6]})
>>> df1 = df.set_index(['a'])
>>> df1
b
a
1 4
2 5
3 6
>>> dg = pd.DataFrame({'a': [3, 4, 5], 'b': [7, 8, 9]})
>>> dg
a b
0 3 7
1 4 8
2 5 9
>>> df2 = dg.set_index('a')
>>> df2
b
a
3 7
4 8
5 9
>>> df1['b'] = df2['b']
>>> df1
b
a
1 NaN
2 NaN
3 7.0
当我调用df1['b'] = df2['b']
时,不在df2
中的那些索引值将变成nan
,而不在df1
中的df2
的索引将不会结转到df1
中。
有没有什么方法可以改变这种行为,使结果DataFrame如下所示?
>>> df1
b
a
1 1
2 2
3 7
4 8
5 9
2条答案
按热度按时间ogq8wdun1#
这是
combine_first
的一个用例。它将对调用 Dataframe 进行优先级排序,并使用第二个 Dataframe 填充任何缺失的值。它还将连接第二个 Dataframe 中没有标签的行。qeeaahzv2#
你可以选择
reindex()
df2,然后用df1填充缺失的值: