python:如何将列标题“降级”为行并重命名列标题(而不替换原始列标题)?

a7qyws3x  于 2021-08-25  发布在  Java
关注(0)|答案(2)|浏览(372)

我有这样一个 Dataframe :

正如你所看到的,列标题“艺术与社会科学14709051375”应该是一行,我想设置更合适的列标题,比如“课程,男性,女性,总计”。
本质上,我希望将当前列标题作为一行数据“下推”,并设置新的列标题。我该怎么做?
我希望我的 Dataframe 如下所示:
学院女性教师与社会科学14709051375艺术与社会科学243810851523
... 等等
---编辑---
谢谢你的回复!我应该提供更多的信息,并声明我不是在使用pandas阅读这个 Dataframe ,而是在使用 tabula 库中的tabla.read\u pdf()函数, Dataframe 如下所示。有什么想法吗?

crcmnpdw

crcmnpdw1#

如评论中所述,如果您正在阅读 CSV 文件中,可以传递列名:

df = pd.read_csv(filePath, names=["Faculty", "Male", "Female", "Total"])

但是,如果您已经有了dataframe,则可以将列添加到-1处的索引中,然后可以重置索引,如果需要,还可以对索引进行排序:

df.loc[-1] = df.columns.to_list() 
df = df.sort_index().reset_index(drop=True)
df.columns = ['Faculty', 'Male', 'Female', 'Totals']
f0brbegy

f0brbegy2#

如果重新读取数据为时已晚,您可以将列的值和当前值堆叠在一起,并生成一个新的dataframe,其中传递了列名:

import numpy as np

all_values = np.row_stack((df.columns, df.to_numpy()))
new_df = pd.DataFrame(all_values, columns=["Faculty", "Male", "Female", "Total"])
``` `tabula.read_pdf` 似乎也支持Pandas选项,因此:

col_names = ["Faculty", "Male", "Female", "Total"]
tabula.read_pdf(path,
pandas_options=dict(header=None, names=col_names))

相关问题