python - 如何以特定方式旋转数据框

标签 python pandas

我在 pandas 中多次旋转数据,但从来没有像这样。这是我拥有的数据示例:

id|a_1|b_1|a_2|b_2
x | 0 | 2 | 3 | 1
y | 1 | 0 | 1 | 4
z | 4 | 2 | 2 | 3

data = [['x',0,2,3,1],['y',1,0,1,4],['z',4,2,2,3]]
df = pd.DataFrame(data,columns=['id','a_1','b_1','a_2','b_2'])

我想旋转以使列同步,如下所示:

id|col|1|2|
x | a |0|3|
x | b |2|1|
y | a |1|1|
y | b |0|4|
z | a |4|2|
z | b |2|3|

这可能吗?我正在考虑将 a_1、b_1 与 a_2、b_2 分开旋转,然后将它们合并,但即便如此,我也不是 100% 如何做到这一点

最佳答案

修改你的列后,问题变成了wide_to_long

df.columns=df.columns.str.split('_').map(lambda x : '_'.join([x[-1],x[0]]))
Yourdf=pd.wide_to_long(df,['1','2'],i='id_id',j='col',sep='_',suffix='\w+').reset_index()
Yourdf
Out[52]: 
  id_id col  1  2
0     x   a  0  3
1     y   a  1  1
2     z   a  4  2
3     x   b  2  1
4     y   b  0  4
5     z   b  2  3

关于python - 如何以特定方式旋转数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54875700/

相关文章:

python - pandas.dataframe.query() 中的模式搜索

python - 使用 itertools.accumulate 计算后缀最大值

python - 如何在 Kivy 中获得更新时间

python - AttributeError:模块 'tensorboard' 没有属性 'lazy'

python - 用于查找面积和周长的 If 语句

python - 从多索引数据框中删除特定行

pandas - 悬停工具提示不适用于 Networkx Graph 的 Bokeh 可视化

python - 如何使用 Pandas 转置行和列?

python - 如何在 SQLAlchemy 中实现未知/可选字段,用户可以在其中添加自己的新字段?

python - 如何使用 DBSCAN 找到集群成员之间的最大/最小距离?