gpt4 book ai didi

python - Pandas 旋转/堆叠/ reshape

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

我正在尝试将数据导入到 pandas DataFrame,其中列为日期字符串、标签、值。我的数据如下所示(仅包含 4 个日期和 5 个标签)

from numpy import random
import numpy as np
import pandas as pd

# Creating the data
dates = ("2015-01-01", "2015-01-02", "2015-01-03", "2015-01-04")
values = [random.rand(5) for _ in range(4)]

data = dict(zip(dates,values))

因此,数据是一个字典,其中键是日期,键是值列表,其中索引是标签。

将此数据结构加载到 DataFrame 中

df1 = pd.DataFrame(data)

将日期作为列,将标签作为索引,将值作为值。

另一种加载方式是

df2 = pd.DataFrame()
df2.from_dict(data, orient='index')

其中日期是索引,列是标签。

在这两种情况下,我都能设法旋转或堆叠到我喜欢的 View 。

我应该如何进行旋转/堆叠以获得我想要的 View ?或者我应该在将数据加载到 DataFrame 之前更改数据结构吗?特别是,我希望避免通过使用一系列对 zip 的调用来预先创建表的所有行。

最佳答案

IIUC:

选项 1
pd.DataFrame.stack

pd.DataFrame(data).stack() \
.rename('value').rename_axis(['label', 'date']).reset_index()

label date value
0 0 2015-01-01 0.345109
1 0 2015-01-02 0.815948
2 0 2015-01-03 0.758709
3 0 2015-01-04 0.461838
4 1 2015-01-01 0.584527
5 1 2015-01-02 0.823529
6 1 2015-01-03 0.714700
7 1 2015-01-04 0.160735
8 2 2015-01-01 0.779006
9 2 2015-01-02 0.721576
10 2 2015-01-03 0.246975
11 2 2015-01-04 0.270491
12 3 2015-01-01 0.465495
13 3 2015-01-02 0.622024
14 3 2015-01-03 0.227865
15 3 2015-01-04 0.638772
16 4 2015-01-01 0.266322
17 4 2015-01-02 0.575298
18 4 2015-01-03 0.335095
19 4 2015-01-04 0.761181
<小时/>

选项 2
理解力

pd.DataFrame(
[[i, d, v] for d, l in data.items() for i, v in enumerate(l)],
columns=['label', 'date', 'value']
)

label date value
0 0 2015-01-01 0.345109
1 1 2015-01-01 0.584527
2 2 2015-01-01 0.779006
3 3 2015-01-01 0.465495
4 4 2015-01-01 0.266322
5 0 2015-01-02 0.815948
6 1 2015-01-02 0.823529
7 2 2015-01-02 0.721576
8 3 2015-01-02 0.622024
9 4 2015-01-02 0.575298
10 0 2015-01-03 0.758709
11 1 2015-01-03 0.714700
12 2 2015-01-03 0.246975
13 3 2015-01-03 0.227865
14 4 2015-01-03 0.335095
15 0 2015-01-04 0.461838
16 1 2015-01-04 0.160735
17 2 2015-01-04 0.270491
18 3 2015-01-04 0.638772
19 4 2015-01-04 0.761181

关于python - Pandas 旋转/堆叠/ reshape ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45439996/

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