Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫-对于每个索引,将所有列放入行中_Python_Pandas - Fatal编程技术网

Python 熊猫-对于每个索引,将所有列放入行中

Python 熊猫-对于每个索引,将所有列放入行中,python,pandas,Python,Pandas,我试图避免循环,但标题可以解释这个问题 import pandas as pd df = pd.DataFrame(columns=['Index',1,2,3,4,5]) df = df.append({'Index':333,1:'A',2:'C',3:'F',4:'B',5:'D'}, ignore_index=True) df = df.append({'Index':234,1:'B',2:'D',3:'C',4:'A',5:'Z'}, ignore_index=True) df.s

我试图避免循环,但标题可以解释这个问题

import pandas as pd

df = pd.DataFrame(columns=['Index',1,2,3,4,5])
df = df.append({'Index':333,1:'A',2:'C',3:'F',4:'B',5:'D'}, ignore_index=True)
df = df.append({'Index':234,1:'B',2:'D',3:'C',4:'A',5:'Z'}, ignore_index=True)
df.set_index('Index', inplace=True)

print(df)
       1  2  3  4  5
Index               
333    A  C  F  B  D
234    B  D  C  A  Z
我想保留索引,并为每一列将其转换为具有相应值的行,如下所示:

       newcol value
Index
333    1      A
333    2      C
333    3      F
333    4      B
333    5      C
234    1      B
234    2      D
234    3      C
234    4      A
234    5      Z
这有点像转置问题,但不是完全那样。有什么想法吗?

您需要:

df.stack().reset_index(1, name='value').rename(columns={'level_1':'newcol'}) 
# OR df.reset_index().melt('Index',var_name='new_col',value_name='Value').set_index('Index') 
#(cc: @anky_91)
输出:

       newcol value
Index              
333         1     A
333         2     C
333         3     F
333         4     B
333         5     D
234         1     B
234         2     D
234         3     C
234         4     A
234         5     Z

另一种解决方案是使用“框架”和“重命名轴”:

df.stack().to_frame('value').rename_axis(index=['','newcol']).reset_index(1)

 newcol value
333 1   A
333 2   C
333 3   F
333 4   B
333 5   D
234 1   B
234 2   D
234 3   C
234 4   A
234 5   Z

df.stack().reset_index(name='value')
?或者
df.reset\u index().melt('index',var\u name='new\u col',value\u name='value')
堆栈和melt解决方案都可以工作。我会研究更多关于这些,但如果你有任何其他意见,请分享。谢谢这显然是个骗局