如何在Python中基于DataFrame的DateTime列添加英土年度通胀列
问题
我有一个包含DateTime列的DataFrame,希望根据DateTime列中的年份添加Yearly Inflation Rate of UK和Yearly Inflation Rate of Turkey两列。
输入示例:
| DateTime |
|---|
| 14.08.2014 |
| 15.07.2015 |
| 16.06.2016 |
期望输出:
| DateTime | Inflation of UK | Inflation of Turkey |
|---|---|---|
| 14.08.2014 | 2.36 | 8.85 |
| 15.07.2015 | 0.37 | 7.67 |
| 16.06.2016 | 1.01 | 7.78 |
实现步骤
1. 导入依赖并创建示例DataFrame
确保已安装pandas,导入后创建测试用DataFrame:
import pandas as pd # 创建输入DataFrame df = pd.DataFrame({ 'DateTime': ['14.08.2014', '15.07.2015', '16.06.2016'] })
2. 解析日期并提取年份
将DateTime列转换为日期格式,提取年份作为临时列:
# 按DD.MM.YYYY格式解析日期 df['DateTime'] = pd.to_datetime(df['DateTime'], format='%d.%m.%Y') # 提取年份 df['Year'] = df['DateTime'].dt.year
3. 定义年度通胀率映射表
用字典存储对应年份的两国通胀率:
inflation_rates = { 2014: {'UK': 2.36, 'Turkey': 8.85}, 2015: {'UK': 0.37, 'Turkey': 7.67}, 2016: {'UK': 1.01, 'Turkey': 7.78} }
4. 映射通胀率到DataFrame
通过map方法将年份对应到通胀率,生成新列:
# 添加英国通胀率列 df['Inflation of UK'] = df['Year'].map(lambda x: inflation_rates[x]['UK']) # 添加土耳其通胀率列 df['Inflation of Turkey'] = df['Year'].map(lambda x: inflation_rates[x]['Turkey']) # 删除临时Year列 df = df.drop('Year', axis=1)
5. 保持原始日期格式(可选)
如果需要让DateTime列回到输入时的字符串格式,执行:
df['DateTime'] = df['DateTime'].dt.strftime('%d.%m.%Y')
最终打印结果即可得到期望的输出:
print(df)
输出示例:
DateTime Inflation of UK Inflation of Turkey 0 14.08.2014 2.36 8.85 1 15.07.2015 0.37 7.67 2 16.06.2016 1.01 7.78
内容的提问来源于stack exchange,提问作者Orhan Dağ
相关产品推荐
相关产品推荐

