我正在尝试将一个数据框的内容附加到另一个数据框。这是我正在使用的基本示例:
import numpy as np
import pandas as pd
df1 = pd.DataFrame({'Id': ['001','001','001','002','002','002','004','004'],
'Date':['2020-01-01','2020-01-02','2020-01-03','2020-01-01','2020-01-02','2020-01-03','2020-01-02','2020-01-03'],
'Quantity': [100,100,100,50,50,50,60,60],
'fx' :[1,1,1,2,2,2,1,1],
'fy' : [1,1,1,3,3,3,1,1]})
df2 = pd.DataFrame({'Id': ['001','001','001','002','002','002', '003'],
'Date':['2019-01-01','2019-01-02','2019-01-03','2019-01-01','2019-01-02','2019-01-03','2019-02-02'],
'Quantity': [100,100,100,50,50,50,20]})
现在,我想将df2的内容附加到df1中,但是问题是,它会在df1中到处出现一些NaN
histo = df1.append(df2)
histo = histo.sort_values('Id')
print(histo)
Id Date Quantity fx fy
0 001 2020-01-01 100 1.0 1.0
1 001 2020-01-02 100 1.0 1.0
2 001 2020-01-03 100 1.0 1.0
0 001 2019-01-01 100 NaN NaN
1 001 2019-01-02 100 NaN NaN
2 001 2019-01-03 100 NaN NaN
3 002 2020-01-01 50 2.0 3.0
4 002 2020-01-02 50 2.0 3.0
5 002 2020-01-03 50 2.0 3.0
3 002 2019-01-01 50 NaN NaN
4 002 2019-01-02 50 NaN NaN
5 002 2019-01-03 50 NaN NaN
6 003 2019-02-02 20 NaN NaN
6 004 2020-01-02 60 1.0 1.0
7 004 2020-01-03 60 1.0 1.0
我要实现的输出是,对于每个“ Id”行,fx和fy的值继续相同。结果将如下所示:
Id Date Quantity fx fy
0 001 2020-01-01 100 1.0 1.0
1 001 2020-01-02 100 1.0 1.0
2 001 2020-01-03 100 1.0 1.0
0 001 2019-01-01 100 1.0 1.0
1 001 2019-01-02 100 1.0 1.0
2 001 2019-01-03 100 1.0 1.0
3 002 2020-01-01 50 2.0 3.0
4 002 2020-01-02 50 2.0 3.0
5 002 2020-01-03 50 2.0 3.0
3 002 2019-01-01 50 2.0 3.0
4 002 2019-01-02 50 2.0 3.0
5 002 2019-01-03 50 2.0 3.0
6 003 2019-02-02 20 2.0 3.0
6 004 2020-01-02 60 1.0 1.0
7 004 2020-01-03 60 1.0 1.0
我该怎么做才能实现上述输出?我在熊猫文档中找不到它。谢谢
答案 0 :(得分:1)
使用填充,用在列中看到的最后一个非NaN值向前填充NaN值。
histo = histo.sort_values('Id').ffill()