为什么我不能取消旋转(融化)此熊猫数据框(Python)

时间:2020-04-24 06:50:58

标签: python pandas dataframe

我有一个制作的熊猫数据框,并且按照我想要的确切方式进行了旋转。现在,我想取消所有操作以使用新形成的数据框获取位置数据(行和列),并查看哪个。例如,我希望第一行(在未使用位置数据进行数据透视的新数据框中)在“行”下具有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

1 个答案:

答案 0 :(得分:1)

DataFrame.stackDataFrame.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