创建一个包括行名,列名和数据框值的列表

时间:2020-05-24 15:42:07

标签: python pandas dataframe

我有以下数据框:

    A   B   C  
A   1   3   0    
B   3   2   5     
C   0   5   4   

我想要的全部显示如下:

my_list = [('A','A',1),('A','B',3),('A','C',0),('B','B',2),('B','C',5),('C','C',4)]

谢谢!

5 个答案:

答案 0 :(得分:5)

IIUC,您可以这样做:

df.stack().reset_index().agg(tuple,1).tolist()

[('A', 'A', 1),
 ('A', 'B', 3),
 ('A', 'C', 0),
 ('B', 'A', 3),
 ('B', 'B', 2),
 ('B', 'C', 5),
 ('C', 'A', 0),
 ('C', 'B', 5),
 ('C', 'C', 4)]

答案 1 :(得分:3)

我想让malloc和值不同应该更清楚

index

[*df.stack().iteritems()]
[(('A', 'A'), 1), (('A', 'B'), 3), (('A', 'C'), 0), (('B', 'A'), 3), (('B', 'B'), 2), (('B', 'C'), 5), (('C', 'A'), 0), (('C', 'B'), 5), (('C', 'C'), 4)]

答案 2 :(得分:3)

您可以stack并使用to_records从结果中获取记录数组:

df.stack().to_frame().to_records().tolist()
# [('A', 'A', 1), ('A', 'B', 3), ('A', 'C', 0), ('B', 'A', 3),...

答案 3 :(得分:1)

嗨,我认为您可以将列表分成几部分来完成

with dataframe as data:
    for line in data.readlines():
        parts = line.split(' ') # split line into parts
        part1 = (parts[0])
        part2 = (parts[1])
        part3 = (parts[2])

答案 4 :(得分:1)

也可以使用unstack

In [1638]: df.unstack().to_frame().to_records().tolist()
Out[1638]: 
[('A', 'A', 1),
 ('A', 'B', 3),
 ('A', 'C', 0),
 ('B', 'A', 3),
 ('B', 'B', 2),
 ('B', 'C', 5),
 ('C', 'A', 0),
 ('C', 'B', 5),
 ('C', 'C', 4)]