python - 使用字典值创建新列
问题描述
import pandas as pd
data = [['2018', '2018-03-25 01:00:00', '2018-10-28 02:00:00'],
['2019', '2019-03-31 01:00:00', '2019-10-27 02:00:00'],
['2020', '2020-03-29 01:00:00', '2020-10-25 02:00:00'],
['2021', '2021-03-28 01:00:00', '2021-10-31 02:00:00']]
df = pd.DataFrame(data, columns = ['Year', 'DST Start', 'DST End'])
df_dict = df.set_index('Year').T.to_dict('list')
data = ['2018','2019', '2019', '2019', '2019', '2020', '2020','2020', '2021']
df1 = pd.DataFrame(data, columns = ['date'])
我正在尝试使用df
date
列中的值对keys
in执行查找方法(因为需要更好的词),df_dict
以创建新列,df1
如下所示:
date col1 col2
0 2018 2018-03-25 01:00:00 2018-10-28 02:00:00
1 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
2 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
3 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
4 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
5 2020 2020-03-29 01:00:00 2020-10-25 02:00:00
6 2020 2020-03-29 01:00:00 2020-10-25 02:00:00
7 2020 2020-03-29 01:00:00 2020-10-25 02:00:00
8 2021 2021-03-28 01:00:00 2021-10-31 02:00:00
但是,我能得到的最接近的是如下所示:
df1['col1'] = df1['date'].map(df_dict)
print(df1)
date col1
0 2018 [2018-03-25 01:00:00, 2018-10-28 02:00:00]
1 2019 [2019-03-31 01:00:00, 2019-10-27 02:00:00]
2 2019 [2019-03-31 01:00:00, 2019-10-27 02:00:00]
3 2019 [2019-03-31 01:00:00, 2019-10-27 02:00:00]
4 2019 [2019-03-31 01:00:00, 2019-10-27 02:00:00]
5 2020 [2020-03-29 01:00:00, 2020-10-25 02:00:00]
6 2020 [2020-03-29 01:00:00, 2020-10-25 02:00:00]
7 2020 [2020-03-29 01:00:00, 2020-10-25 02:00:00]
8 2021 [2021-03-28 01:00:00, 2021-10-31 02:00:00]
解决方案
如果我清楚地理解你的挑战,这是一个合并:
(df.rename(columns={'DST Start' : 'col1', 'DST End': 'col2'})
.merge(df1.rename(columns={'date':'Year'}),
on='Year')
)
Year col1 col2
0 2018 2018-03-25 01:00:00 2018-10-28 02:00:00
1 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
2 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
3 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
4 2019 2019-03-31 01:00:00 2019-10-27 02:00:00
5 2020 2020-03-29 01:00:00 2020-10-25 02:00:00
6 2020 2020-03-29 01:00:00 2020-10-25 02:00:00
7 2020 2020-03-29 01:00:00 2020-10-25 02:00:00
8 2021 2021-03-28 01:00:00 2021-10-31 02:00:00
推荐阅读
- google-apps-script - GmailApp getAliases 不包括帐户的主要电子邮件地址
- python - 我可以在没有 YOLO 等深度学习检测的情况下使用 DeepSORT 吗?
- android - 通过从分页 2 迁移到分页 3 得到重复的类错误
- photoshop - 从 Photoshop 图层获取图层 ID
- c# - 在 Xamarin 中,我是否应该担心在滚动视图中显示大量内容?
- python - 如何查询币安保证金账户的唯一符号余额?
- graphql - 在 Apollo graphql 服务器中配置 @Directive
- r - 是否可以根据行范围和 r 中的逻辑条件对 data.frame 进行子集化?
- google-analytics - Google Analytics(分析)用户 ID 报告维度和指标
- php - 404 未找到带有路由参数的 Laravel