Python 比较2个大小不均匀的数据帧的匹配值并组合在一起,然后用最接近的数据替换NaN值
我不熟悉python和Stackoverflow。我在处理数据方面有问题。我有两组大小不同的数据。df1的大小为1000,df2的大小为100000。以下是df1和df2的示例Python 比较2个大小不均匀的数据帧的匹配值并组合在一起,然后用最接近的数据替换NaN值,python,pandas,dataframe,Python,Pandas,Dataframe,我不熟悉python和Stackoverflow。我在处理数据方面有问题。我有两组大小不同的数据。df1的大小为1000,df2的大小为100000。以下是df1和df2的示例 df1= Date x y 0 2020-01-01 01:01 1.1 2.4 1 2020-01-01 01:05 4.2 5.5 2 2020-01-01 01:08 7.3 8.6
df1=
Date x y
0 2020-01-01 01:01 1.1 2.4
1 2020-01-01 01:05 4.2 5.5
2 2020-01-01 01:08 7.3 8.6
df2=
Date x y
0 2020-01-01 01:00 NaN NaN
1 2020-01-01 01:01 NaN NaN
2 2020-01-01 01:02 NaN NaN
3 2020-01-01 01:03 NaN NaN
4 2020-01-01 01:04 NaN NaN
5 2020-01-01 01:05 NaN NaN
6 2020-01-01 01:06 NaN NaN
7 2020-01-01 01:07 NaN NaN
8 2020-01-01 01:08 NaN NaN
9 2020-01-01 01:09 NaN NaN
10 2020-01-01 01:10 NaN NaN
我想做的是将它们组合成一个新的数据帧,如果df1['Date']=df2['Date']
,df3将显示如下
df3=
Date x y
0 2020-01-01 01:00 NaN NaN
1 2020-01-01 01:01 1.1 2.4
2 2020-01-01 01:02 NaN NaN
3 2020-01-01 01:03 NaN NaN
4 2020-01-01 01:04 NaN NaN
5 2020-01-01 01:05 4.2 5.5
6 2020-01-01 01:06 NaN NaN
7 2020-01-01 01:07 NaN NaN
8 2020-01-01 01:08 7.3 8.6
9 2020-01-01 01:09 NaN NaN
10 2020-01-01 01:10 NaN NaN
然后,NaN值将等于上面最接近的值
df3=
Date x y
0 2020-01-01 01:00 NaN NaN
1 2020-01-01 01:01 1.1 2.4
2 2020-01-01 01:02 1.1 2.4
3 2020-01-01 01:03 1.1 2.4
4 2020-01-01 01:04 1.1 2.4
5 2020-01-01 01:05 4.2 5.5
6 2020-01-01 01:06 4.2 5.5
7 2020-01-01 01:07 4.2 5.5
8 2020-01-01 01:08 7.3 8.6
9 2020-01-01 01:09 7.3 8.6
10 2020-01-01 01:10 7.3 8.6
太多了 一种方法是在完整的df上使用(假设它包括所有索引)。然后使用fillna
获取所有缺失的先前值:
a=pd.DataFrame(
{
“日期”:pd.日期范围(start=“2020-01-01”,期间=3),
“x”:[1,np.nan,3],
“y”:[5,np.nan,6],
}
).设置索引(“日期”)
b=pd.DataFrame(
{
“日期”:pd.日期范围(start=“2020-01-01”,期间=5),
“x”:[np.nan]*5,
“y”:[np.nan]*5,
}
).设置索引(“日期”)
印刷品(a、b)
b.更新(a)
b=b.fillna(方法=“ffill”)
印刷品(b)
欢迎来到堆栈溢出。祝贺你第一次发帖。你试过什么?将您的代码和任何错误/输出添加到您的问题中,这将帮助其他人找到您问题的解决方案。阅读以下内容可能会对您有所帮助:。我不明白为什么
2020-09-01 01:08中的df1
与2020-01-01:08中的df2
相匹配?很抱歉输入错误。所有日期均为2020-01-01。我已经重新编辑了问题STHX,请发表评论!将尝试tmr,看看这是否适合我
| date | x | y |
|:--------------------|----:|----:|
| 2020-01-01 00:00:00 | 1 | 5 |
| 2020-01-02 00:00:00 | nan | nan |
| 2020-01-03 00:00:00 | 3 | 6 |
| date | x | y |
|:--------------------|----:|----:|
| 2020-01-01 00:00:00 | nan | nan |
| 2020-01-02 00:00:00 | nan | nan |
| 2020-01-03 00:00:00 | nan | nan |
| 2020-01-04 00:00:00 | nan | nan |
| 2020-01-05 00:00:00 | nan | nan |
| date | x | y |
|:--------------------|----:|----:|
| 2020-01-01 00:00:00 | 1 | 5 |
| 2020-01-02 00:00:00 | 1 | 5 |
| 2020-01-03 00:00:00 | 3 | 6 |
| 2020-01-04 00:00:00 | 3 | 6 |
| 2020-01-05 00:00:00 | 3 | 6 |