我的数据框包含如下三列:
id no. name
1A 32 ABC
4D 34 CFD
3B 32 DGA
我想像这样将第三列移到连续的下一行:
1A 32
ABC
4D 34
CFD
3B 32
DGA
在Python中这怎么可能?
我尝试通过创建两个数据帧来创建一个数据帧,其中包含“ id and no”。和另一个“名称”,然后将它们合并。但是我不喜欢它的输出不干净。
答案 0 :(得分:2)
您可以将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