在Python中连接多个日期列和列值
实际的.CSV数据文件 一个可重复的例子:在Python中连接多个日期列和列值,python,pandas,Python,Pandas,实际的.CSV数据文件 一个可重复的例子: df = pd.DataFrame({'Date': pd.date_range('01/03/11',periods=8, format=' %d/%m/%y %p'), 'MTM1': [2, 3, 4, 5, 6, 7, 8, 9], 'Date1': pd.date_range('01/07/11',periods=8, format=' %d/%m/%y
df = pd.DataFrame({'Date': pd.date_range('01/03/11',periods=8, format=' %d/%m/%y %p'),
'MTM1': [2, 3, 4, 5, 6, 7, 8, 9],
'Date1': pd.date_range('01/07/11',periods=8, format=' %d/%m/%y %p'),
'MTM2': [4, 3, 5, -7, 6, -9, 8, 9]
})
我有一个以上格式的.csv文件,我想连接所有日期列,并根据各自的日期索引保留MTM列值,并去掉其余的日期列,为所有MTM创建一个日期索引。考虑将数据帧按日期/MTM对拆分为数据帧列表,然后使用
reduce()链接合并外部联接。
:
您好,谢谢您的提示,实际上我正在阅读DF的列表,然后在添加列表后运行concat,这是不需要的,正如您通过合并lest本身所建议的。很高兴听到解决方案有效!如果有帮助,请在旁边打勾确认解决方案。您好,谢谢您的努力,这里我忘了再提一点,即这些对的长度是可变的,因此这里由于长度可变且对的数量较多,它正在合并,但也会给出其他行,结尾有不匹配的日期。我们可以将连接从外部更改为内部。那么您想在所有数据帧中保留具有MTM的行吗?没有一个NaN?好吧,我的错误解决了,排序函数有问题,谢谢
df = pd.DataFrame({'Date': pd.date_range('01/03/11',periods=8, format=' %d/%m/%y %p'),
'MTM1': [2, 3, 4, 5, 6, 7, 8, 9],
'Date1': pd.date_range('01/07/11',periods=8, format=' %d/%m/%y %p'),
'MTM2': [4, 3, 5, -7, 6, -9, 8, 9]
})
from functools import reduce
import pandas as pd
df = pd.DataFrame({'Date': pd.date_range('01/03/11',periods=8, format=' %d/%m/%y'),
'MTM1': [2, 3, 4, 5, 6, 7, 8, 9],
'Date1': pd.date_range('01/07/11',periods=8, format=' %d/%m/%y'),
'MTM2': [4, 3, 5, -7, 6, -9, 8, 9]
})
# FOR POSTED TWO PAIRING DATA
dfList = [df[['Date', 'MTM1']],
df[['Date1','MTM2']].rename(columns={'Date1':'Date'})]
# FOR MANY PAIRINGS (ASSUMING ORDER AND MATCHES INTACT)
dfList = [df[[d, m]].rename(columns={d:'Date'})\
for d, m in zip([c for c in df.columns if 'Date' in c],
[c for c in df.columns if 'MTM' in c])]
df = reduce(lambda left, right: pd.merge(left, right, on=['Date'], how='outer'), dfList).set_index('Date')
print(df)
# MTM1 MTM2
# Date
# 2011-01-03 2.0 NaN
# 2011-01-04 3.0 NaN
# 2011-01-05 4.0 NaN
# 2011-01-06 5.0 NaN
# 2011-01-07 6.0 4.0
# 2011-01-08 7.0 3.0
# 2011-01-09 8.0 5.0
# 2011-01-10 9.0 -7.0
# 2011-01-11 NaN 6.0
# 2011-01-12 NaN -9.0
# 2011-01-13 NaN 8.0
# 2011-01-14 NaN 9.0