gpt4 book ai didi

python - 将 pandas 数据框中的不同长度列表转换为一列中的行

转载 作者:行者123 更新时间:2023-12-03 07:57:49 24 4
gpt4 key购买 nike

我在pandas中有一个这样的表,日期总是星期五,但由于假期或其他原因它可能不连续,而在Target中,它是一个列表,包含下周的表现,时间的长度最后一行的列表可能是 <5,因为今天是星期三,所以本周我只有星期一和星期二的数据:

| Date         | Performance          |
| 2022/01/27 | [0.1,0.1,0.2,0.1,0.3]|
| 2022/02/10 | [0.1,0.1,0.2,0.1,0.3]|
| 2022/02/17 | [0.1,0.1,0.2,0.1,0.3]|
| 2022/02/24 | [0.1,0.1] |

我想将此表转换为日期/绩效二维表,其中包含实际绩效日的日期和每天的绩效:

| Date         | Performance |
| 2022/01/30 |0.1 |
| 2022/01/31 |0.1 |
| 2022/02/01 |0.2 |
| 2022/02/02 |0.1 |
| 2022/02/03 |0.3 |
| 2022/02/13 |0.1 |
| 2022/02/14 |0.1 |
| 2022/02/15 |0.2 |
| ... |... |
| 2022/02/27 |0.1 |
| 2022/02/28 |0.1 |

如何在 python 中执行此操作?

我尝试使用列表的 sum 将所有列表连接到一维数组,但将其附加到日期列时出现问题。

最佳答案

这是一种使用 df.explode() 的方法和 df.groupby().cumcount()

df = df.explode('Performance')
df['Date'] = pd.to_datetime(df['Date']) + pd.to_timedelta(
df.groupby(level=0).cumcount(), unit='D')

df = df.reset_index(drop=True)
print(df)


Date Performance
0 2022-01-27 0.1
1 2022-01-28 0.1
2 2022-01-29 0.2
3 2022-01-30 0.1
4 2022-01-31 0.3
5 2022-02-10 0.1
6 2022-02-11 0.1
7 2022-02-12 0.2
8 2022-02-13 0.1
9 2022-02-14 0.3
10 2022-02-17 0.1
11 2022-02-18 0.1
12 2022-02-19 0.2
13 2022-02-20 0.1
14 2022-02-21 0.3
15 2022-02-24 0.1
16 2022-02-25 0.1

关于python - 将 pandas 数据框中的不同长度列表转换为一列中的行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75598798/

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