【问题标题】:How to label rows by column name [duplicate]如何按列名标记行[重复]
【发布时间】:2019-09-17 16:21:02
【问题描述】:

我正在尝试将每一行的列名放入 pandas 数据框中。为了说明,我的数据是这样的

A | B | C
1 | 4 | 7
2 | 5 | 8
3 | 6 | 9

尝试转换为:


A 1
A 2
A 3
B 4
B 5
B 6
C 7
C 8

谢谢

【问题讨论】:

标签: python pandas


【解决方案1】:

如果x 是你的data-frame,像这样:

import pandas as pd

x= pd.DataFrame ([[1,4,5],[2,5,8],[3,6,9]])
x.columns = ['A','B','C']
print(x)

   A  B  C
0  1  4  5
1  2  5  8
2  3  6  9

首先,您应该将append value of xcolumns of x 放在两个单独的列表中,例如ab

a = []
b = []

for i in range(0,len(x)):
    for j in range(0,len(x.columns)):
        a.append(x.iloc[i][j])
        b.append(x.columns[j]) 
print(a)
print(b)
[1, 4, 5, 2, 5, 8, 3, 6, 9]
['A', 'B', 'C', 'A', 'B', 'C', 'A', 'B', 'C']

现在 a 是您想要的列表,b 是 a 的索引。因此,您可以通过这种方式构建数据框:

f= pd.DataFrame(a)
f.index=b

如果你想对它进行排序,你可以试试这个代码:

print(f.sort_index())

A  1
A  2
A  3
B  4
B  5
B  6
C  5
C  8
C  9

【讨论】:

  • 非常感谢
  • @gartuns 如果可行就接受它
  • 如果可行,请投票。你刚刚接受了我的解决方案。
【解决方案2】:

使用df.melt:

print(df.melt())

或使用pd.melt:

print(pd.melt(df))

两者都重现:

  variable  value
0        A      1
1        A      2
2        A      3
3        B      4
4        B      5
5        B      6
6        C      7
7        C      8
8        C      9

【讨论】:

  • @gartuns 如果可行就接受它
猜你喜欢
  • 1970-01-01
  • 2016-11-13
  • 1970-01-01
  • 1970-01-01
  • 2018-03-21
  • 2021-11-03
  • 2023-01-25
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多