我有一个csv文件(比如A.csv),其指数从1980-01-01到2018-02-28 (增加了一天)和一列数据(比如每天的股价)。
我有另一个csv文件(比如B.csv),从1980-01到2018-02 (增加了一个月)和一个数据栏(比如月度贸易余额)。
在这种情况下,如何将B.csv合并到A.csv (通过维护每日索引)?即,每日指数+每日股价一栏+每月贸易差额另一栏(我需要在一个月内的每一天维持相同的贸易平衡值,将每月的贸易差额扩大至每日的贸易差额)。
发布于 2018-03-17 02:03:10
您可以使用pandas来完成这个任务。
一种方法是将两个日期列转换为datetime对象,并使用pd.Series.map执行从一个表到另一个表的映射。
由于没有为您的月数据指定日期,因此,对于我们的映射,我们将规范化到本月的第一天。
import pandas as pd
# first read in the 2 tables into dataframes
# df_daily = pd.read_csv('daily.csv')
# df_monthly = pd.read_csv('monthly.csv')
df_daily = pd.DataFrame({'Date': ['1980-01-01', '1980-01-02', '1980-01-03'],
'Value': [1, 2, 3]})
df_monthly = pd.DataFrame({'Month': ['1979-12', '1980-01', '1980-03'],
'Value': [100, 200, 300]})
# convert to datetime objects
df_daily['Date'] = pd.to_datetime(df_daily['Date'])
df_monthly['Month'] = pd.to_datetime(df_monthly['Month']+'-01')
# perform mapping after normalising to first day of month
df_daily['MonthValue'] = df_daily['Date'].map(lambda x: x.replace(day=1))\
.map(df_monthly.set_index('Month')['Value'])
# Date Value MonthValue
# 0 1980-01-01 1 200
# 1 1980-01-02 2 200
# 2 1980-01-03 3 200https://stackoverflow.com/questions/49331751
复制相似问题