繁体   English   中英

如何将特定列转换为熊猫中的行关联其他列值

[英]How To transpose specific columns into rows in pandas associate other column value

嗨,我正在尝试在熊猫中进行转置操作,但条件是一列的值应与转置的行相关联。 下面给出的示例将说明更好的方法:数据如下所示:

A   1   2   3   4  51  52 53 54 
B   11  22  23  24 71  72 73 74

我试图这样做的结果:

A   1   51
A   2   52
A   3   53
A   4   54
B   11  71
B   22  72
B   23  73
B   24  74

在第一行中,数据在单行中,我想在另一列中将数据从1转换为4,并将值“ A”转置。 谁能建议我该怎么做?

看来您需要meltstack

print (df)
   0   1   2   3   4
0  A   1   2   3   4
1  B  11  22  23  24

df1 = pd.melt(df, id_vars=0).drop('variable', axis=1).sort_values(0)
df1.columns = list('ab')
print (df1)
   a   b
0  A   1
2  A   2
4  A   3
6  A   4
1  B  11
3  B  22
5  B  23
7  B  24

df2 = df.set_index(0).stack().reset_index(level=1, drop=True).reset_index(name='a')
df2.columns = list('ab')
print (df2)
   a   b
0  A   1
1  A   2
2  A   3
3  A   4
4  B  11
5  B  22
6  B  23
7  B  24

通过评论编辑:

#set index with first column
df = df.set_index(0)

#create MultiIndex
cols = np.arange(len(df.columns))
df.columns = [ cols // 4, cols % 4]
print (df)
    0               1            
    0   1   2   3   0   1   2   3
0                                
A   1   2   3   4  51  52  53  54
B  11  22  23  24  71  72  73  74

#stack, reset index names, remove level and reset index
df1 = df.stack().rename_axis((None, None)).reset_index(level=1, drop=True).reset_index()
#set new columns names
df1.columns = ['a','b','c']
print (df1)
   a   b   c
0  A   1  51
1  A   2  52
2  A   3  53
3  A   4  54
4  B  11  71
5  B  22  72
6  B  23  73
7  B  24  74

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM