将 Pandas DataFrame 的行转换为列标题,

新手上路,请多包涵

我必须处理的数据有点乱。它的数据中有标题名称。如何从现有的 pandas 数据框中选择一行并将其(重命名为)列标题?

我想做类似的事情:

 header = df[df['old_header_name1'] == 'new_header_name1']

df.columns = header

原文由 E.K. 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 1.1k
2 个回答
In [21]: df = pd.DataFrame([(1,2,3), ('foo','bar','baz'), (4,5,6)])

In [22]: df
Out[22]:
     0    1    2
0    1    2    3
1  foo  bar  baz
2    4    5    6

将列标签设置为等于第二行(索引位置 1)中的值:

 In [23]: df.columns = df.iloc[1]

如果索引具有唯一标签,您可以使用以下方法删除第二行:

 In [24]: df.drop(df.index[1])
Out[24]:
1 foo bar baz
0   1   2   3
2   4   5   6

如果索引不是唯一的,您可以使用:

 In [133]: df.iloc[pd.RangeIndex(len(df)).drop(1)]
Out[133]:
1 foo bar baz
0   1   2   3
2   4   5   6

使用 df.drop(df.index[1]) 删除与第二行具有相同标签的 所有 行。因为非唯一索引可能会导致这样的绊脚石(或潜在错误),所以通常最好注意索引是唯一的(即使 Pandas 不需要它)。

原文由 unutbu 发布,翻译遵循 CC BY-SA 4.0 许可协议

这有效(熊猫 v’0.19.2’):

 df.rename(columns=df.iloc[0])

原文由 Zachary Wilson 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题