gpt4 book ai didi

python - 在数据框中每行创建多个新行

转载 作者:行者123 更新时间:2023-12-05 02:43:34 25 4
gpt4 key购买 nike

我有以下 df:

    ID              data
0 123123 1
1 123412 1
2 123123 1
3 234234 2
4 432424 2

我想知道的是根据 id 每行添加 x 新行。更具体地说,我想添加一个包含 7 天范围内日期的新列,然后为 df 中的每个 ID 添加一个包含日期的新行。

所以如果我们说我只想要 2 天范围内的日期,输出应该看起来像这样:

    ID              data   date
0 123123 1 2020-02-01
0 123123 1 2020-02-02
1 123412 1 2020-02-01
1 123412 1 2020-02-02
2 123123 1 2020-02-01
2 123123 1 2020-02-02
3 234234 2 2020-02-01
3 234234 2 2020-02-02
4 432424 2 2020-02-01
4 432424 2 2020-02-02

我想过用循环来做,但是这个想法看起来真的很慢而且效率不高。

df = pd.DataFrame(columns=['ID','data','date'])
for date in pd.date_range(start=dateRange[0],end=dateRange[1]):
for row in df_old:
df = df.append({'ID': row['ID'], 'data': row['data'], 'date': date}, ignore_index=True)

我真的很感谢有更好的主意

最佳答案

让我们用melt尝试assign

out = df.assign(**{'date1':'2020-02-01','date2':'2020-02-02'}).melt(['ID','data']).sort_values('ID')
ID data variable value
0 123123 1 date1 2020-02-01
2 123123 1 date1 2020-02-01
5 123123 1 date2 2020-02-02
7 123123 1 date2 2020-02-02
1 123412 1 date1 2020-02-01
6 123412 1 date2 2020-02-02
3 234234 2 date1 2020-02-01
8 234234 2 date2 2020-02-02
4 432424 2 date1 2020-02-01
9 432424 2 date2 2020-02-02

关于python - 在数据框中每行创建多个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66871838/

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