我有一个制作的熊猫数据框,并且按照我想要的确切方式进行了旋转。现在,我想取消所有操作以使用新形成的数据框获取位置数据(行和列),并查看哪个。例如,我希望第一行(在未使用位置数据进行数据透视的新数据框中)在“行”下具有1,在“ a”下具有1,并且将1作为值(下面的示例)。有人可以找出我如何取消获取行和列值的方法吗?我试过使用pd.melt,但它似乎没有用(没有区别)。请尽快回复。谢谢!下面直接是用于制作数据透视框的代码。
import pandas as pd
row = [1, 2, 3, 4, 5]
df67 = {'row':row,}
df67 = pd.DataFrame(df67,columns=['row'])
df67['a'] = [1, 2, 3, 4, 5]
df67['b'] =[13, 18, 5, 10, 6]
#df67 (dataframe before pivot)
df68 = df67.pivot(index='row', columns = 'a')
#df68 (dataframe after pivot)
What I want the result to be for the first line:
row | a | value
1 | 1 | 13
答案 0 :(得分:1)
将DataFrame.stack
与DataFrame.reset_index
一起使用:
df = df68.stack().reset_index()
print (df)
row a b
0 1 1 13.0
1 2 2 18.0
2 3 3 5.0
3 4 4 10.0
4 5 5 6.0
编辑:
为避免删除丢失的值,请使用dropna=False
参数:
df = df68.stack(dropna=False).reset_index()
print (df)
row a b
0 1 1 13.0
1 1 2 NaN
2 1 3 NaN
3 1 4 NaN
4 1 5 NaN
5 2 1 NaN
6 2 2 18.0
7 2 3 NaN
8 2 4 NaN
9 2 5 NaN
10 3 1 NaN
11 3 2 NaN
12 3 3 5.0
13 3 4 NaN
14 3 5 NaN
15 4 1 NaN
16 4 2 NaN
17 4 3 NaN
18 4 4 10.0
19 4 5 NaN
20 5 1 NaN
21 5 2 NaN
22 5 3 NaN
23 5 4 NaN
24 5 5 6.0