熊猫系列重复n次并更改列值
问题内容:
我有这样的输入数据。
NAME | PLACE | DATE
A | X | 2020-04-30
B | Y | 2019-04-30
我想重复5次并通过增加年份来更改日期
NAME | PLACE | DATE
A | X | 2020-04-30
A | X | 2021-04-30
A | X | 2022-04-30
A | X | 2023-04-30
A | X | 2024-04-30
A | X | 2025-04-30
B | Y | 2019-04-30
B | Y | 2020-04-30
B | Y | 2021-04-30
B | Y | 2022-04-30
B | Y | 2023-04-30
B | Y | 2024-04-30
使用熊猫重复可以做到这一点吗?
问题答案:
采用:
df['Date'] = pd.to_datetime(df['Date'])
y = np.array([pd.offsets.DateOffset(years=_) for _ in np.tile(range(6), len(df.index))])
df = df.reindex(df.index.repeat(6)).assign(Date=lambda x: x['Date'] + y)
细节:
创建需要添加到列中np.array
的DateOffset
对象Date
以获得所需的年份偏移量。
print(y)
array([<DateOffset: years=0>, <DateOffset: years=1>,
<DateOffset: years=2>, <DateOffset: years=3>,
<DateOffset: years=4>, <DateOffset: years=5>,
<DateOffset: years=0>, <DateOffset: years=1>,
<DateOffset: years=2>, <DateOffset: years=3>,
<DateOffset: years=4>, <DateOffset: years=5>], dtype=object)
用于reindex
根据需要为数据框重新编制索引,并使用assign将Date
年份与相加。
print(df)
Name Place Date
0 A X 2020-04-30
0 A X 2021-04-30
0 A X 2022-04-30
0 A X 2023-04-30
0 A X 2024-04-30
0 A X 2025-04-30
1 B Y 2019-04-30
1 B Y 2020-04-30
1 B Y 2021-04-30
1 B Y 2022-04-30
1 B Y 2023-04-30
1 B Y 2024-04-30