python - 将 pandas 数据帧转换为元组列表 - ('Row' 、 'Column' 、值)

标签 python pandas dataframe

还有一些关于同一主题的其他问题,但所需的格式完全不同。

我正在尝试使用 holoviews and bokeh 构建热图可视化

我的数据正在作为 Excel 文件读入数据框中,大致如下:

    Foo    Bar    Bash    Baz   ...
A   1      2      3       4
B   2      1      0       3
C   0      0      2       0
D   2      3      5       1
...

文档称热图的数据可以作为具有一个或多个关联值维度的 2D 表格数据提供。

绘制数据框本身不起作用,我觉得我需要将数据转换为如下形式:

[('A', 'Foo', 1), ('A', 'Bar', 2), ('A', 'Bash', 3), ('A', 'Baz', 4), ('B', 'Foo', 1)...]

有没有比手动迭代整个数据帧并手动构建它更快的方法?

最佳答案

您可以先通过stack reshape 形状然后转换为元组:

tups = [tuple(x) for x in df.stack().reset_index().values.tolist()]

另一个类似的解决方案是创建 3 个级别 MultiIndex:

tups = df.stack().to_frame().set_index(0, append=True).index.tolist()

或者zip 3个单独的数组,其中numpy.repeat , numpy.tileravel :

a = np.repeat(df.index, len(df.columns))
b = np.tile(df.columns, len(df))
c = df.values.ravel()

tups = list(zip(a,b,c))

关于python - 将 pandas 数据帧转换为元组列表 - ('Row' 、 'Column' 、值),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50505678/

相关文章:

python - 使用警报窗口身份验证抓取站点

python - python中的常见做法是将__init__放在类定义的开头吗?

python - 使用 matplotlib 和 pandas 创建连续图

python - 如何通过 yfinance 下载数据修复此错误

python - 如果与最后一行连续出现,则添加值,否则保持相同的值

python - 为什么我没有得到列表

python - 为什么当我将 wholeTextFiles() 与 pyspark 一起使用时 AWS 拒绝我的连接?

python - Dataframe 访问第二级 MultiIndex

python - 如何有效地从多个 DataFrame 中获取单元格值以插入主 DataFrame

python - 对数据框中的一行条件进行外部处理