首页 > 解决方案 > 将数据框的第三列放在下一行

问题描述

我的数据框包含三列,如下所示:

id   no.  name
1A   32   ABC
4D   34   CFD
3B   32   DGA

我想将第三列移动到连续的下一行,如下所示:

1A   32
ABC
4D   34
CFD
3B   32
DGA

这在 Python 中怎么可能?

我尝试通过创建两个数据框,其中一个包含“id 和 no”。和另一个“名称”,然后将它们合并。但我不喜欢它不干净的输出。

标签: pythonpython-2.7pandasdataframeindexing

解决方案


您可以将name系列拆分为一个新的数据帧并操作两个结果数据帧的索引。最后,concat用来组合它们。

# split out dataframe of names
df_name = df.pop('name').to_frame('id')
df_name['no.'] = ''

# manipulate indices so they are non-overlapping
df_name.index = df_name.index * 2 + 1
df.index = df.index * 2

# concatenate two dataframes
res = pd.concat([df, df_name]).sort_index()

结果:

print(res)

    id no.
0   1A  32
1  ABC    
2   4D  34
3  CFD    
4   3B  32
5  DGA    

推荐阅读