Python:Pandas怎么样要将前两行pandas dataframe合并到dataframe头?

2024-05-23 18:46:33 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图读取一个excel文件,如下所示:

enter image description here

我还有一个脚本,将这个xlsx文件转换成csv文件及其工作表名称(如果有三个工作表,那么它将创建三个不同的csv文件)。在

它的csv文件如下所示:

Unnamed: 0,Gender A,Unnamed: 2,Gender B,Unnamed: 4,Gender C,Gender D
date,Male,Female,Male,Female,Male,Female
2017-01-01 00:00:00,2,3,3,2,3,3
2017-01-02 00:00:00,5,7,7,42,3,5
2017-01-03 00:00:00,4,6,6,12,2,7
2017-01-04 00:00:00,6,7,3,6,4,8
2017-01-05 00:00:00,6,8,8,3,5,3
2017-01-06 00:00:00,54,3,3,6,3,5
2017-01-07 00:00:00,3,4,6,3,6,5
2017-01-08 00:00:00,3,6,6,3,6,4
2017-01-09 00:00:00,2,2,8,7,5,2
2017-01-10 00:00:00,4,3,2,4,5,5
2017-01-11 00:00:00,12,10,10,3,1,6
2017-01-12 00:00:00,9,7,7,3,4,1

所以,我的第一个问题是处理这些文件最好的选择是xlsx还是csv?在

接下来,我只想将前两行作为列标题读取。这样我就能知道在哪个性别有多少男性和女性。在

预期输出:

^{pr2}$

Tags: 文件csv脚本名称标题datexlsxgender
2条回答

我喜欢斯科特伯顿的做法。这里有一些化妆品的替代品。 如果希望列标题看起来美观,特别是当第二行包含数量的单位时,可以执行以下操作:

df = pd.read_excel('Untitled 2.xlsx', header=[0,1], index_col=0)
df.columns = df.columns.map(lambda h: '{}\n({})'.format(h[0], h[1]))
df.rename_axis('Date')

如果要确保列名不包含空格(以便可以作为数据帧的属性访问它们):

^{pr2}$

它给出了:

                     Gender_A__Male  Gender_A__Female   ...         Gender_C__Male  Gender_D__Female
Date                                                    ...                                         
2017-01-01 00:00:00               2                 3   ...                      3                 3
2017-01-02 00:00:00               5                 7   ...                      3                 5
2017-01-03 00:00:00               4                 6   ...                      2                 7
2017-01-04 00:00:00               6                 7   ...                      4                 8
2017-01-05 00:00:00               6                 8   ...                      5                 3
2017-01-06 00:00:00              54                 3   ...                      3                 5
2017-01-07 00:00:00               3                 4   ...                      6                 5
2017-01-08 00:00:00               3                 6   ...                      6                 4
2017-01-09 00:00:00               2                 2   ...                      5                 2
2017-01-10 00:00:00               4                 3   ...                      5                 5
2017-01-11 00:00:00              12                10   ...                      1                 6
2017-01-12 00:00:00               9                 7   ...                      4                 1

让我们试试:

df = pd.read_excel('Untitled 2.xlsx', header=[0,1])
df.columns = df.columns.map('_'.join)
df.rename_axis('Date').reset_index()

输出:

^{pr2}$

相关问题 更多 >