如何从pandas数据框中提取列,将其附加到行,同时保持其他列不变。
这是我的示例数据集。

import pandas as pd
import numpy as np
df = pd.DataFrame({'ID':  np.arange(0,5),
                  'sample_1' : [5,6,7,8,9],
                  'sample_2' : [10,11,12,13,14],
                  'group_id' : ["A","B","C","D","E"]})

我要的结果是:
df2 = pd.DataFrame({'ID':  [0, 1, 2, 3, 4, 0, 1, 2, 3, 4],
                  'sample_1' : [5,6,7,8,9,10,11,12,13,14],
                  'group_id' : ["A","B","C","D","E","A","B","C","D","E"]})

我试图使用pd.concat分割数据帧和concat,但它给出了NaN值。
我的原始数据集很大。

最佳答案

可以使用stack:将索引设置为不想修改的列,调用堆栈,按“sample”列排序,然后重置索引:

df.set_index(['ID','group_id']).stack().sort_values(0).reset_index([0,1]).reset_index(drop=True)

   ID group_id   0
0   0        A   5
1   1        B   6
2   2        C   7
3   3        D   8
4   4        E   9
5   0        A  10
6   1        B  11
7   2        C  12
8   3        D  13
9   4        E  14

关于python - 如何从数据框中提取列并将其附加到行,同时保持其他列不变,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/52939749/

10-12 17:02
查看更多