我见过很多关于数据透视表的问题.即使他们不知道他们询问数据透视表,他们通常也是.几乎不可能写出一个规范的问题和答案,其中包含了旋转的所有方面....
......但是我要试一试.
现有问题和答案的问题在于,问题通常集中在OP难以概括以便使用一些现有的良好答案的细微差别.但是,没有一个答案试图给出全面的解释(因为这是一项艰巨的任务)
从我的谷歌搜索中查看一些示例
pd.DataFrame.pivot因此,每当有人搜索时,pivot他们会得到零星的结果,而这些结果可能无法回答他们的具体问题.
您可能会注意到,我明显地将我的列和相关列值命名为与我将如何在下面的答案中进行调整相对应.请注意,以便熟悉哪些列名称可以从哪里获得您正在寻找的结果.
import numpy as np
import pandas as pd
from numpy.core.defchararray import add
np.random.seed([3,1415])
n = 20
cols = np.array(['key', 'row', 'item', 'col'])
arr1 = (np.random.randint(5, size=(n, 4)) // [2, 1, 2, 1]).astype(str)
df = pd.DataFrame(
add(cols, arr1), columns=cols
).join(
pd.DataFrame(np.random.rand(n, 2).round(2)).add_prefix('val')
)
print(df)
key row item col val0 val1
0 key0 row3 item1 col3 0.81 0.04
1 key1 …Run Code Online (Sandbox Code Playgroud) 关于groupby到dataframe有一个非常受欢迎的SO问题,请看这里.不幸的是,我不认为这个特定的用例是最有用的.
假设您有一个展平形式的分层数据集:
例如
key val
0 'a' 2
1 'a' 1
2 'b' 3
3 'b' 4
Run Code Online (Sandbox Code Playgroud)
我想做的是将该数据帧转换为此结构
'a' 'b'
0 2 3
1 1 4
Run Code Online (Sandbox Code Playgroud)
我觉得这会很简单
pd.DataFrame(df.groupby('key').groups)
Run Code Online (Sandbox Code Playgroud)
但事实并非如此.
那么我该如何进行这种转变呢?