gpt4 book ai didi

python - 将年和月列与 Pandas 干净地组合到单个日期列

转载 作者:行者123 更新时间:2023-12-03 22:53:41 25 4
gpt4 key购买 nike

我有看起来像这样的数据:

+----+------+-------+
| ID | YEAR | MONTH |
+----+------+-------+
| A | 2017 | 1 |
| B | 2017 | 2 |
| C | 2017 | 3 |
| D | 2017 | 4 |
| E | 2017 | 5 |
| F | 2017 | 6 |
+----+------+-------+

我想添加一个名为 DATE 的新列,它存储由 YEARMONTH 列的日期对象组成的新列。像这样的东西:
+----+------+-------+------------+
| ID | YEAR | MONTH | DATE |
+----+------+-------+------------+
| A | 2017 | 1 | 2017-01-01 |
| B | 2017 | 2 | 2017-02-01 |
| C | 2017 | 3 | 2017-03-01 |
| D | 2017 | 4 | 2017-04-01 |
| E | 2017 | 5 | 2017-05-01 |
| F | 2017 | 6 | 2017-06-01 |
+----+------+-------+------------+

我使用以下代码创建了该列,但想知道是否有更简洁的“Pythonic”单行代码。类似于 df['DATE']=date(df.year, df.month, 1) 的东西。
import pandas as pd
from datetime import date


ID = ['A', 'B', 'C', 'D', 'E', 'F']
YEAR = [2017, 2017, 2017, 2017, 2017, 2017]
MONTH = [1, 2, 3, 4, 5, 6]


df = pd.DataFrame({'ID': ID, 'YEAR': YEAR, 'MONTH': MONTH})


DATE = []
for y, m in zip(df.YEAR, df.MONTH):
DATE.append(date(y, m, 1))


df['DATE'] = DATE

最佳答案

选项 1
将具有 3 列的数据帧切片 - YEARMONTHDAY 传递给 pd.to_datetime

df['DATE'] = pd.to_datetime(df[['YEAR', 'MONTH']].assign(DAY=1))
df

ID MONTH YEAR DATE
0 A 1 2017 2017-01-01
1 B 2 2017 2017-02-01
2 C 3 2017 2017-03-01
3 D 4 2017 2017-04-01
4 E 5 2017 2017-05-01
5 F 6 2017 2017-06-01

选项 2
字符串连接,使用 pd.to_datetime
pd.to_datetime(df.YEAR.astype(str) + '/' + df.MONTH.astype(str) + '/01')

0 2017-01-01
1 2017-02-01
2 2017-03-01
3 2017-04-01
4 2017-05-01
5 2017-06-01
dtype: datetime64[ns]

关于python - 将年和月列与 Pandas 干净地组合到单个日期列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48304927/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com