【问题标题】:Convert row wise data into columns using Pandas使用 Pandas 将逐行数据转换为列
【发布时间】:2019-10-06 22:04:18
【问题描述】:

我已经阅读了几个类似的问题及其答案,但我仍然无法执行转换。
这就是我的示例数据框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']})

我想重新格式化它,使第 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']})

我研究了.pivot() 方法,但我无法使用它来塑造我想要的数据,我不确定索引值会是什么。我仍然可以通过将行转换为列表并从列表中提取标题并创建一个新的数据框来进行这种转换,但我觉得它不是很“pythonic”,我想知道是否有更好的方法可以使用现在和将来的。任何帮助,将不胜感激。谢谢。

【问题讨论】:

  • 查看pandas.transpose()

标签: python pandas


【解决方案1】:

用途:

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

或者如果列名是str:

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

【讨论】:

  • 比我的简单+1
  • 添加reset_index(drop=True) 以从 0 开始索引。
猜你喜欢
  • 2022-09-24
  • 2019-08-30
  • 1970-01-01
  • 2020-10-09
相关资源
最近更新 更多