python - 将 2D numpy 数组转换为行列值 pandas DataFrame
问题描述
假设我有一个像这样的二维 numpy 数组:
arr = np.array([[1, 2], [3, 4], [5, 6]])
# array([[1, 2],
# [3, 4],
# [5, 6]])
如何将其转换为“长”结构,每个值有一条记录,与行和列索引相关联?在这种情况下,它看起来像:
df = pd.DataFrame({'row': [0, 0, 1, 1, 2, 2],
'column': [0, 1, 0, 1, 0, 1],
'value': [1, 2, 3, 4, 5, 6]})
melt
只分配列标识符,而不是行:
pd.DataFrame(arr).melt()
# variable value
# 0 0 1
# 1 0 3
# 2 0 5
# 3 1 2
# 4 1 4
# 5 1 6
有没有办法附加行标识符?
解决方案
传递index
给 idvar:
pd.DataFrame(arr).reset_index().melt('index')
# index variable value
# 0 0 0 1
# 1 1 0 3
# 2 2 0 5
# 3 0 1 2
# 4 1 1 4
# 5 2 1 6
您可以重命名:
df = pd.DataFrame(arr).reset_index().melt('index')
df.columns = ['row', 'column', 'value']
推荐阅读
- python - 由于操作系统错误,Tensorflow 无法安装在我的桌面上
- google-sheets - Google 表格数据透视表中父级总数的百分比
- flutter - 带有重新布局的颤动动画旋转
- python - 需要将每一列乘以熊猫中该列中的顶部单元格
- html - VBA 从 yahoo Finance 收集数据(数据反应式)
- python - AWS SimpleDB 的棉花糖架构
- php - 简化 RecursiveIteratorIterator PHP 函数
- reactjs - 如何正确使用带有 typescript 的 createAsyncThunk 函数?
- c# - Raspberry Pi 恒温器上的 C# 内存泄漏
- c++ - 可变参数上的奇怪值和覆盖文本