我有两个具有许多列df1,df2的数据帧,并且我想用时间值相同的df2列中的数据替换所有df1值(时间列除外):
df1:
index time x y ......many other columns ( the same as df2)
0 1 1 1
1 1.1 2 2
2 1.1 3 3
3 1.1 4 4
4 1.4 5 5
5 1.5 6 6
6 1.5 7 7
df2:
index time x y ....many other columns (the same as df1)
0 1 10 10
1 1.1 11 11
2 1.2 12 12
3 1.3 13 13
4 1.4 14 14
5 1.5 15 15
6 1.6 16 16
the result for df1 should be:
index time x y ....many other columns
0 1 10 10
1 1.1 11 11
2 1.1 11 11
3 1.1 11 11
4 1.4 14 14
5 1.5 15 15
6 1.5 15 15
我认为我能够使自己的思想井井有条,并希望能找到适合您的解决方案。
试试这个,您可以使用combine_first
进行一些调整来得到答案:
combine_first
从另一个值中填充空值dataframe
,因此首先您可以将所有值(“时间”列中的值除外)替换为np.nan
。请注意,我将“时间”列用作index
。
正如combine_first
将返回两个数据帧的并集一样,您可以使用isin
来从df1
最终输出中仅获取时间值。
import numpy as np
import pandas as pd
df1[df1.columns.difference(['time'])] = np.nan
res = df1.set_index('time').combine_first(df2.set_index('time')).reset_index()
li = [i for i in df1['time'].unique()]
final= res[res['time'].isin(li)]
这将使您:
time x y
0 1.0 10.0 10.0
1 1.1 11.0 11.0
2 1.1 11.0 11.0
3 1.1 11.0 11.0
6 1.4 14.0 14.0
7 1.5 15.0 15.0
8 1.5 15.0 15.0
在您的实际数据集上尝试一下,让我知道它是否有效。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句