转换列元素和创建新行项目的最佳方法

时间:2017-10-31 10:02:42

标签: pandas

我必须转换下面的pandas数据帧,如下所示。列X7有一些元素需要拆分并形成新行

X1  Y   X7
117 AA  "1256 (LM)
        1257 (LM)
         1258 (LM)"
118 LL   131 (NB)
         132 (NB)
         133 (NB)

到以下数据框

X1  Y   X7
117 AA  1256(LM)
117 AA  1257(LM)
117 AA  1258(LM)
118 LL  131(NB)
118 LL  132(NB)
118 LL  133(NB)

1 个答案:

答案 0 :(得分:0)

我相信你需要:

#set index to all columns for repeat
#split column X7 by separator
#reshape by stack
#convert MultiIndex to columns
df = (df.set_index(['X1','Y'])['X7']
        .str.split('\n', expand=True)
        .stack()
        .reset_index(name='X7')
        .drop('level_2', axis=1)
        )
print (df)
    X1   Y         X7
0  117  AA  1256 (LM)
1  117  AA  1257 (LM)
2  117  AA  1258 (LM)
3  118  LL   131 (NB)
4  118  LL   132 (NB)
5  118  LL   133 (NB)