使用Pandas将按行数据转换为列

时间:2019-10-06 13:58:15

标签: python pandas

我已经阅读了几个类似的问题及其答案,但仍然无法执行转换。
这是我的示例数据框df的样子:

pd.DataFrame({0: ['Destiantion', 'Switch Location', 'Driver', 'Company'],
1: ['CALGARY', np.nan, 'BALJIT', 'SUPERIOR'],
2: ['CALGARY', np.nan, 'ROBERT', 'APPS'],
3: ['CALGARY', np.nan, 'MARIUS', 'APPS'],
4: ['DELTA', np.nan, np.nan, 'ATC']})

enter image description here

我想重新格式化它,以使列0 df[0]中的值成为新的列标题,而新标题列的数据位于旧数据帧的同一行中。

预期结果:

pd.DataFrame({'Destiantion': ['CALGARY', 'CALGARY', 'CALGARY', 'DELTA'],
              'Switch Location': [np.nan, np.nan, np.nan, np.nan],
              'Driver': ['BALJIT', 'ROBERT', 'MARIUS', np.nan],
              'Company': ['SUPERIOR', 'APPS', 'APPS', 'ATC']})

enter image description here

我研究了.pivot()方法,但是我无法根据需要调整数据的形状,也不确定索引值是多少。我仍然可以通过将行转换为列表并从列表中提取标头并创建一个新的数据框来进行此转换,但是我不觉得这是“ pythonic”的,我想知道是否有更好的方法可以利用现在和将来。任何帮助,将不胜感激。谢谢。

1 个答案:

答案 0 :(得分:3)

使用:

 df=df.set_index(0).T.reset_index(drop=True) 

或者列名是str:

df=df.set_index('0').T.reset_index(drop=True)