【问题标题】:How to find again the index after pivoting dataframe?旋转数据框后如何再次找到索引?
【发布时间】:2021-07-18 23:11:23
【问题描述】:

我从一个 csv 文件中创建了一个数据框,其中包含按年份(从 1946 年到 2021 年运行)和月份(一年内)的死亡人数数据:

dataD = pd.read_csv('MY_FILE.csv', sep=',')

输出的第一行(902...)是:

dataD

    Year    Month   Deaths
0   2021    2   55500
1   2021    1   65400
2   2020    12  62800
3   2020    11  64700
4   2020    10  56900

正如预期的那样,数据框包含一个编号为0,1,2,索引 ...等等。 现在,我使用以下代码旋转此数据框,以便在列中仅按年份和月份显示 1 行:

dataDW = dataD.pivot(index='Year', columns='Month', values='Deaths')

结果的第一行现在是:

Month   1   2   3   4   5   6   7   8   9   10  11  12
Year                                                
1946    70900.0     53958.0     57287.0     45376.0     42591.0     37721.0     37587.0     34880.0     35188.0     37842.0     42954.0     49596.0
1947    60453.0     56891.0     56442.0     45121.0     42605.0     37894.0     38364.0     36763.0     35768.0     40488.0     41361.0     46007.0
1948    46161.0     45412.0     51983.0     43829.0     42003.0     37084.0     39069.0     35272.0     35314.0     39588.0     43596.0     53899.0
1949    87861.0     58592.0     52772.0     44154.0     41896.0     39141.0     40042.0     37372.0     36267.0     40534.0     47049.0     47918.0
1950    51927.0     47749.0     50439.0     47248.0     45515.0     40095.0     39798.0     38124.0     37075.0     42232.0     44418.0     49860.0

我的问题是: 为了再次找到索引 0,1,2,..etc,我必须在之前的旋转代码中进行哪些更改?当我输出旋转文件时?我想我需要指定index=*** 才能使枢轴指令运行。但之后,我想恢复一个索引“照常”(如果我可以说的话),就像我的第一个文件 dataD 一样。 有没有可能?

【问题讨论】:

  • 看起来可能是这样,但新输出似乎将“月份”显示为索引;没有一列分开显示 0,1,2... 也许我不明白?

标签: python-3.x pandas dataframe indexing


【解决方案1】:

旋转后可以reset_index()

dataDW = dataD.pivot(index='Year', columns='Month', values='Deaths').reset_index()

这将为您提供以下信息:

Month  Year        1        2        3        4        5        6        7        8        9       10       11       12
0      1946  70900.0  53958.0  57287.0  45376.0  42591.0  37721.0  37587.0  34880.0  35188.0  37842.0  42954.0  49596.0
1      1947  60453.0  56891.0  56442.0  45121.0  42605.0  37894.0  38364.0  36763.0  35768.0  40488.0  41361.0  46007.0
2      1948  46161.0  45412.0  51983.0  43829.0  42003.0  37084.0  39069.0  35272.0  35314.0  39588.0  43596.0  53899.0
3      1949  87861.0  58592.0  52772.0  44154.0  41896.0  39141.0  40042.0  37372.0  36267.0  40534.0  47049.0  47918.0
4      1950  51927.0  47749.0  50439.0  47248.0  45515.0  40095.0  39798.0  38124.0  37075.0  42232.0  44418.0  49860.0

请注意,此处的“月份”可能看起来像索引名称,但实际上是 df.columns.name。如果愿意,您可以取消设置:

df.columns.name = None

然后给你:

   Year        1        2        3        4        5        6        7        8        9       10       11       12
0  1946  70900.0  53958.0  57287.0  45376.0  42591.0  37721.0  37587.0  34880.0  35188.0  37842.0  42954.0  49596.0
1  1947  60453.0  56891.0  56442.0  45121.0  42605.0  37894.0  38364.0  36763.0  35768.0  40488.0  41361.0  46007.0
2  1948  46161.0  45412.0  51983.0  43829.0  42003.0  37084.0  39069.0  35272.0  35314.0  39588.0  43596.0  53899.0
3  1949  87861.0  58592.0  52772.0  44154.0  41896.0  39141.0  40042.0  37372.0  36267.0  40534.0  47049.0  47918.0
4  1950  51927.0  47749.0  50439.0  47248.0  45515.0  40095.0  39798.0  38124.0  37075.0  42232.0  44418.0  49860.0

【讨论】:

  • 不客气!实际上,即使在知道它应该是什么意思之后,IMO 的输出仍然令人困惑。
  • 你能解释一下“IMO”吗?我可能会问一个愚蠢的问题,但英语不是我的母语。
  • 抱歉,我的意思是“在我看来”
  • 好!同时提高我的 Python 和英语技能!!!
猜你喜欢
  • 2017-04-10
  • 2022-09-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-14
相关资源
最近更新 更多