Python 我可以将数据帧转换为元组列表吗?

Python 我可以将数据帧转换为元组列表吗?,python,pandas,Python,Pandas,我有一个熊猫数据帧,具有以下形式的相关性: A B D 0.78 0.49 E 0.93 0.67 Python中是否有快速获取元组列表的方法,如: [(A,D,0.78),(A,E,0.93),(B,D,0.49),(B,E,0.67)] 提前感谢您的帮助。用于重塑,然后将系列转换为数据帧,最后将嵌套列表转换为元组: L = [tuple(x) for x in df.unstack().reset_index().to_numpy()] 或: 另一个想法,谢谢

我有一个熊猫数据帧,具有以下形式的相关性:

   A     B  
D  0.78  0.49 
E  0.93  0.67
Python中是否有快速获取元组列表的方法,如: [(A,D,0.78),(A,E,0.93),(B,D,0.49),(B,E,0.67)]

提前感谢您的帮助。

用于重塑,然后将
系列
转换为
数据帧
,最后将嵌套列表转换为元组:

L = [tuple(x) for x in df.unstack().reset_index().to_numpy()]
或:

另一个想法,谢谢@datanoveler:

L = list(df.unstack().reset_index().itertuples(name=None,index=None))

如果需要交换订单,谢谢@Ch3steR:

L = list(df.reset_index().melt(id_vars='index').itertuples(name=None,index=None)) 
print (L)
[('D', 'A', 0.78), ('E', 'A', 0.93), ('D', 'B', 0.49), ('E', 'B', 0.67)]
试试这个

import pandas as pd
dt = {'a': [1, 2], 'b': [3, 4]}
cols = ['a', 'b']
rows = ['d', 'e']
df = pd.DataFrame(dt, index=rows)
print(df)

    a   b
d   1   3
e   2   4



result = []
for c in cols:
    for r in rows:
        result.append((c, r, df[c][r]))
print(result)
[('a', 'd', 1), ('a', 'e', 2), ('b', 'd', 3), ('b', 'e', 4)]


当然,这是可能的。我会这样做:

import pandas as pd
import numpy as np

# Creating example DF
tab = pd.DataFrame(data={'A': (1,2), 'B': (3,4)})
tab.index=['C', 'D']

# Values to tuples
np.array(tab.apply(lambda x: [(x.index[i], x.name,y) for i, y in enumerate(x)])).ravel()

是的,你可以。请使用
df.melt
列表(df.reset_index().melt(id_vars='index').itertuples(name=None,index=None))
。好答案+1
import pandas as pd
dt = {'a': [1, 2], 'b': [3, 4]}
cols = ['a', 'b']
rows = ['d', 'e']
df = pd.DataFrame(dt, index=rows)
print(df)

    a   b
d   1   3
e   2   4



result = []
for c in cols:
    for r in rows:
        result.append((c, r, df[c][r]))
print(result)
[('a', 'd', 1), ('a', 'e', 2), ('b', 'd', 3), ('b', 'e', 4)]

import pandas as pd
import numpy as np

# Creating example DF
tab = pd.DataFrame(data={'A': (1,2), 'B': (3,4)})
tab.index=['C', 'D']

# Values to tuples
np.array(tab.apply(lambda x: [(x.index[i], x.name,y) for i, y in enumerate(x)])).ravel()