首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >熊猫把一个数据中的月度数据和另一个数据中的每日数据合并起来

熊猫把一个数据中的月度数据和另一个数据中的每日数据合并起来
EN

Stack Overflow用户
提问于 2018-03-17 01:52:43
回答 1查看 1.7K关注 0票数 2

我有一个csv文件(比如A.csv),其指数从1980-01-01到2018-02-28 (增加了一天)和一列数据(比如每天的股价)。

我有另一个csv文件(比如B.csv),从1980-01到2018-02 (增加了一个月)和一个数据栏(比如月度贸易余额)。

在这种情况下,如何将B.csv合并到A.csv (通过维护每日索引)?即,每日指数+每日股价一栏+每月贸易差额另一栏(我需要在一个月内的每一天维持相同的贸易平衡值,将每月的贸易差额扩大至每日的贸易差额)。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-03-17 02:03:10

您可以使用pandas来完成这个任务。

一种方法是将两个日期列转换为datetime对象,并使用pd.Series.map执行从一个表到另一个表的映射。

由于没有为您的月数据指定日期,因此,对于我们的映射,我们将规范化到本月的第一天。

代码语言:javascript
复制
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         200
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/49331751

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档