我有两个数据帧,我碰巧设置了#time; timeStamp'作为指数。 df_1.set_index('timeStamp', inplace=True)
。
df_1
value
timeStamp
2016-11-23 20:00:00 37.21
2016-11-23 21:00:00 37.79
2016-11-23 22:00:00 33.99
2016-11-23 23:00:00 32.66
2016-11-24 00:00:00 31.61
df_2
value
timeStamp
2016-11-23 23:00:00 32.92
2016-11-24 00:00:00 31.54
2016-11-24 01:00:00 29.14
我想在共享时间时制作一个比较两个值的数据帧。我尝试了combined_df= pd.merge(df_real, df_fc, on='timeStamp', how='inner')
并获得了key error
。
因此,我没有在索引上合并两个数据帧,而是保留了没有' timeStamp'的数据帧。作为他们的索引。例如。
df我用来合并
timeStamp value
0 2016-11-23 20:00:00 37.21
1 2016-11-23 21:00:00 37.79
2 2016-11-23 22:00:00 33.99
3 2016-11-23 23:00:00 32.66
13 2016-11-24 00:00:00 31.61
然后我能够合并并设置了我的新df(如下所示)。然后我也将索引设置为时间戳,稍后再开始。
timeStamp value_x value_y
0 2016-11-23 23:00:00 32.66 32.92
我的问题为什么我无法合并指定为索引的列名?我想将该合并设置为新的数据帧...
答案 0 :(得分:1)
我相信你可以在索引上合并。您似乎使用了错误的语法。您应该尝试使用on
和left_index
,而不是指定right_index
。
答案 1 :(得分:1)
您需要表明您正在合并索引:
pd.merge(df_1, df_2, left_index=True, right_index=True, how='inner')
答案 2 :(得分:1)
DataFrame加入/合并
pd.merge(left, right, how='inner', on=None, left_on=None, right_on=None,
left_index=False, right_index=False, sort=True,
suffixes=('_x', '_y'), copy=True, indicator=False,
validate=None)
答案 3 :(得分:0)
试试这个:
df_real.merge(df_fc, on='timeStamp', how='inner')
测试代码:
import pandas as pd
d = {'time1': ['A', 'B'], 'val1': [2, 4]}
df = pd.DataFrame(data=d)
df.set_index('time1')
d1 = {'time1': ['A', 'B','C'], 'val1': [5, 6, 9]}
df2 = pd.DataFrame(data=d1)
df2.set_index('time1')
df.merge(df2, on = 'time1')
输出是:
time1 val1_x val1_y
0 A 2 5
1 B 4 6