python - 熊猫重塑数据框,其中每行是单元格值和索引
问题描述
如何获取正常的数据框,如下所示:
pd.DataFrame(columns=['X', 'Y'],index=['A','B'])
X Y
A 1 2
B 3 4
并生成一个新的数据框,其中每一行由单元格、列名和索引组成,如下所示:
col1 col2 col3
row0 1 X A
row1 2 Y A
row2 3 X B
row3 4 Y B
任何帮助表示赞赏。
解决方案
用于DataFrame.stack
重塑,然后DataFrame.rename_axis
用于新列名称,DataFrame.reset_index
用于MultiIndex Series
to DataFrame
,如有必要,重命名索引并通过以下方式更改列的顺序DataFrame.reindex
:
df = (df.stack()
.rename_axis(('col3','col2'))
.reset_index(name='col1')
.rename(lambda x: f'row{x}')
.reindex(['col1','col2','col3'], axis=1))
print (df)
col1 col2 col3
row0 1 X A
row1 2 Y A
row2 3 X B
row3 4 Y B
Numpy/pandas 解决方案 - numpy.ravel
, numpy.tile
,numpy.repeat
带有DataFrame
构造函数:
df = pd.DataFrame({'col1': df.to_numpy().ravel(),
'col2': np.tile(df.columns,len(df.index)),
'col3': np.repeat(df.index,len(df.columns))}).rename(lambda x: f'row{x}')
print (df)
col1 col2 col3
row0 1 X A
row1 2 Y A
row2 3 X B
row3 4 Y B
推荐阅读
- wordpress - Woocommerce Rest api 不适用于亚马逊(AWS Bitnami 实例)
- mysql - 用 mySQL 计算“子列”
- php - PHP postgres 故障转移
- wcf - 如何在 Visual Studio 2019 中将 WCF 服务添加到 .NET Core 项目?
- javascript - 从父到子路由的 navigateByUrl 不起作用
- html - 如何在不重叠内容的情况下创建可重复的标题?
- c# - MVVM 中的关注点分离
- pinterest - Pinterest 的 RSS 文件的正确格式是什么?
- reactjs - React 应用程序在 Firefox 桌面上重新加载时卡住了,但在 Chrome 和其他浏览器上却没有
- android - 有没有办法添加一个复杂的颤振应用程序,flutter_storyBook 作为本机 Kotlin 应用程序的模块?