首页 > 解决方案 > 需要堆叠特定列并保持其他列不变

问题描述

我想堆叠列 B 和 C 并保持其他列不变。

这就是我所拥有的

    A      B     C   D
0  a1  hello1   bye1  d1
1  a2  hello2   bye2  d2
2  a3  hello3   bye3  d3
3  a4  hello4   bye4  d4

我尝试过使用 melt 和 stack 功能。得不到我想要的。

这就是我要的

    A      B     C   D
0  a1  hello1        d1
1  a2  hello2        d2
2  a3  hello3        d3
3  a4  hello4        d4
4       bye1
5       bye2
6       bye3
7       bye4

标签: pythonpandasstack

解决方案


尝试另一种方式:

cols=['B','C']
final=(df.reindex(range(df.shape[0]*len(cols)))
         .assign(B=df.melt(df.columns^cols).value,C=np.nan).fillna(''))

    A       B  C   D
0  a1  hello1     d1
1  a2  hello2     d2
2  a3  hello3     d3
3  a4  hello4     d4
4        bye1      
5        bye2      
6        bye3      
7        bye4      

推荐阅读