Python 如何在pandas中比较dataframe中的日期时间索引
我有两个数据帧。 第一个Python 如何在pandas中比较dataframe中的日期时间索引,python,pandas,dataframe,Python,Pandas,Dataframe,我有两个数据帧。 第一个 df1 = pd.read_csv('t1.txt',delimiter="\t", parse_dates = True, index_col = 'Date') Date 4001 4002 4003 4004 4005 2017-01-01 151902 2755 0 0 0 2017-01-02 157271
df1 = pd.read_csv('t1.txt',delimiter="\t", parse_dates = True, index_col = 'Date')
Date 4001 4002 4003 4004 4005
2017-01-01 151902 2755 0 0 0
2017-01-02 157271 143598 2343 0 0
2017-01-03 95806 138308 126034 2034 0
2017-01-04 68874 91469 129751 116066 1822
第二个呢
df2 = pd.read_excel('gg.xlsx', parse_dates = True, index_col='Date')
Date num value
2017-01-01 4001 68
2017-01-02 4002 621
2017-01-03 4003 8
2017-01-04 4004 5
2017-01-05 4005 5
下面是一些元代码样式:
如您所见,df1.columns和df2['num']是同一个实体。
df1有错误,我想修复数据。如果相对df1.column的df1.Date小于df2.Date,则需要将df1.values设置为0,对于4001、4002等,则为df2.num
如何比较数据帧中的索引日期时间类型?IIUC
v=df1.melt('Date')
v.variable=v.variable.astype(int)
s=v.merge(df2,left_on='variable',right_on='num',how='left')
v.loc[s.Date_x<s.Date_y,'value']=0
v.set_index(['Date','variable']).unstack()
Out[1211]:
value
variable 4001 4002 4003 4004 4005
Date
2017-01-01 151902 0 0 0 0
2017-01-02 157271 143598 0 0 0
2017-01-03 95806 138308 126034 0 0
2017-01-04 68874 91469 129751 116066 0
谢谢你的功能融化和取消堆叠。在将Datetime索引转换为id_vars时遇到一些问题,但现在一切都好了。@DaurenSergazin很高兴我能帮忙,很高兴编码
v=df1.melt('Date')
v.variable=v.variable.astype(int)
s=v.merge(df2,left_on='variable',right_on='num',how='left')
v.loc[s.Date_x<s.Date_y,'value']=0
v.set_index(['Date','variable']).unstack()
Out[1211]:
value
variable 4001 4002 4003 4004 4005
Date
2017-01-01 151902 0 0 0 0
2017-01-02 157271 143598 0 0 0
2017-01-03 95806 138308 126034 0 0
2017-01-04 68874 91469 129751 116066 0