gpt4 book ai didi

python - pandas dataframe 使用 apply 为一组值添加多行

转载 作者:行者123 更新时间:2023-12-05 05:18:36 24 4
gpt4 key购买 nike

我有一个 pandas 数据框包含以下列:

sate_1      state_2 
----- -----
New York Washington
Ohio Utah

我想做的是为 state_1 和 state_2 的每个不同组合构造一个输入日期,因此结果将是:

sate_1       state_2          date_time
New York Washington 2017-11-01 00:00
New York Washington 2017-11-01 03:00
New York Washington 2017-11-01 06:00
Ohio Utah 2017-11-01 00:00
Ohio Utah 2017-11-01 03:00
Ohio Utah 2017-11-01 06:00

所以基本上对于每个不同的行,我想返回从今天开始的 3 个时间段。我有获取日期时间的逻辑,但我是通过所有记录的循环来执行此操作的,这很耗时,因为我的数据将包含超过 1M 行。我想知道有没有一种方法可以使用 apply 函数来执行此操作,我认为它会快得多。

最佳答案

设置

import pandas as pd
df = pd.DataFrame({'state_1': ['New York', 'Ohio'],
'state_2': ['Washington', 'Utah']})
# df:
# state_1 state_2
# 0 New York Washington
# 1 Ohio Utah

将三个所需日期中的第一个添加到每一行

df['date'] = pd.to_datetime('2017-11-01')
# df:
# state_1 state_2 date
# 0 New York Washington 2017-11-01
# 1 Ohio Utah 2017-11-01

对于每一行,创建一个包含所有三个所需日期的新 DataFrame,在这些日期广播状态名称,并将 DataFrame 列表连接成一个

pd.concat([
pd.DataFrame(
{'state_1': row.state_1,
'state_2': row.state_2,
'date': pd.date_range(row.date, freq='3h', periods=3)
}
) for i, row in df.iterrows()
], ignore_index=True).loc[:, ['state_1', 'state_2', 'date']]
# df:
# state_1 state_2 date
# 0 New York Washington 2017-11-01 00:00:00
# 1 New York Washington 2017-11-01 03:00:00
# 2 New York Washington 2017-11-01 06:00:00
# 3 Ohio Utah 2017-11-01 00:00:00
# 4 Ohio Utah 2017-11-01 03:00:00
# 5 Ohio Utah 2017-11-01 06:00:00

关于python - pandas dataframe 使用 apply 为一组值添加多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47498344/

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