python - 将多列数据框更改为单列而不会丢失python中的信息
问题描述
我想在比较多个数据帧时看到单元格值的变化。这些数据框是由 JSON 数据形成的,这些数据形成了许多列表,我不能轻易更改这个数据源。假设有 10 个数据帧,10 行和 10 列(相同标记)。我想通过将每个数据框变成 100 行和 1 列来比较信息。
对于 3x3 示例:
import pandas as pd
data = [{'a':1,'b':2,'c':3},{'a':10,'b':20,'c':30},{'a':100,'b':200,'c':300}]
df = pd.DataFrame(data)
df.index = ['x','y','z']
给出这张表
a b c
x 1 2 3
y 10 20 30
z 100 200 300
但我想拥有:
col
xa 1
xb 2
xc 3
ya 10
yb 20
yc 30
za 100
zb 200
zc 300
这样我就可以添加许多列并比较值的变化。
有人可以建议我如何使用熊猫来做到这一点吗?如果需要第三个列是可以的,即:
1 2 3
x a 1
x b 2
x c 3
y a 10
y b 20
y c 30
z a 100
z b 200
z c 300
解决方案
使用DataFrame.stack
withSeries.to_frame
然后展平MultiIndex
为index
with map
:
df_us = df.stack().to_frame('col')
df_us.index = df_us.index.map(lambda x: f'{x[0]}{x[1]}')
print (df_us)
col
xa 1
xb 2
xc 3
ya 10
yb 20
yc 30
za 100
zb 200
zc 300
对于 3 列:
df_us = df.stack().reset_index()
df_us.columns = [0,1,2]
print (df_us)
0 1 2
0 x a 1
1 x b 2
2 x c 3
3 y a 10
4 y b 20
5 y c 30
6 z a 100
7 z b 200
8 z c 300
推荐阅读
- python - Apache Spark:无法在 Jupyter Notebook 上使用 Matplotlib
- php - 字符串相同的多个不同的数字(PHP)
- lua - 在线编译是否优化 nodeMcu ram 上的只读变量?
- javascript - 使用 Jquery 根据输入(搜索栏)值显示/隐藏 img 元素
- python-3.x - Python3我应该如何执行这个复杂的shell命令
- c# - 我可以使用 Camelcase 转换属性(如 ID(两个大写字母))得到什么
- bash - SoF2 shell 脚本未运行
- if-statement - 淘汰赛js中点击函数的数据绑定if语句
- c++ - Mac 上的 C++:权限被拒绝
- python-3.x - Cv2.addWeighted 返回“'Tuple' Object is not callable”错误