【问题标题】:Dataframe Transpose and Index数据帧转置和索引
【发布时间】:2020-07-31 11:22:55
【问题描述】:

我有一个像这样的 Pandas 数据框 (df)。

Color  20-05-2020  21-05-2020  22-05-2020  23-05-2020
Yellow   10           20          30          40
Red      15           25          35          45
Blue     23           34          45          56

当我使用df.T 转置时,我得到了这样的结果。

Color        Yellow  Red  Blue
20-05-2020     10    15    23
21-05-2020     20    25    34
22-05-2020     30    35    45
23-05-2020     40    45    56

当我检查df.index时,我发现,

Index(['Color', '20-05-2020', '21-05-2020', '22-05-2020', '23-05-2020'], dtype='object', length=...)

如何从索引中删除“颜色”?我还想将索引命名为“日期”。我该怎么做?

谢谢。

【问题讨论】:

    标签: python python-3.x pandas dataframe indexing


    【解决方案1】:

    使用df.index.name:

    >>> df
            20-05-2020  21-05-2020  22-05-2020  23-05-2020
    Color                                                 
    Yellow          10          20          30          40
    Red             15          25          35          45
    Blue            23          34          45          56
    
    >>> df = df.T
    >>> df.columns.name = ''
    >>> df.index.name = 'Date'
    >>> df
                 Yellow  Red  Blue
    Date         
    20-05-2020     10    15    23
    21-05-2020     20    25    34
    22-05-2020     30    35    45
    23-05-2020     40    45    56
    

    或者,

    >>> df = pd.DataFrame(df.values.T, 
                          index=df.columns.rename('Date'),
                          columns=df.index.rename(''))
    >>> df
                 Yellow  Red  Blue
    Date         
    20-05-2020     10    15    23
    21-05-2020     20    25    34
    22-05-2020     30    35    45
    23-05-2020     40    45    56
    

    或者你可以使用df.reindex:

    >>> df.reindex(df.index.rename('')).T.reindex(df.columns.rename('Date'))
                Yellow  Red  Blue
    Date                         
    20-05-2020      10   15    23
    21-05-2020      20   25    34
    22-05-2020      30   35    45
    23-05-2020      40   45    56
    

    根据您的喜好,您可以设置df.columns.name='Date'df.index.name='Date'

    【讨论】:

    • 我尝试了所有 3 种方法。但它仍然存在。只有改变我注意到,当我在任何方法之后执行df.index 时,我发现name='Date' 在那里。
    • 我的回答是基于您的indexnameColor 的假设。如果不是这样。请尝试以下操作:df.columns.name = '';df.index.name = 'Date';df = df.T
    • 现在df.index 是这样的。 Index(['', '20-05-2020', '21-05-2020', '22-05-2020', '23-05-2020'], dtype='object', length=)。如何删除第一个空白?
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-31
    • 2019-08-12
    • 2023-01-12
    • 2021-01-12
    • 1970-01-01
    • 2021-10-06
    相关资源
    最近更新 更多