【问题标题】:How do you use pandas.DataFrame columns as index, columns, and values?如何使用 pandas.DataFrame 列作为索引、列和值?
【发布时间】:2015-04-26 13:38:52
【问题描述】:

我似乎不知道如何以可搜索的方式提出这个问题,但我觉得这是一个简单的问题。

给定一个 pandas Dataframe 对象,我想使用一列作为索引,一列作为列,第三列作为值。

例如:

   a   b   c
0  1  dog  2 
1  1  cat  1
2  1  rat  6
3  2  cat  2
4  3  dog  1
5  3  cat  4

我想将“a”列用作我的索引值,将“b”列用作我的列,将“c”列用作每行/列的值,并用 0 填充缺失值(如果可能)。比如……

   dog   cat   rat
1   2     1     6
2   0     2     0
3   1     4     0

这将是一个“a”乘“b”矩阵,以“c”作为填充值

【问题讨论】:

  • 听起来你想要pivot_table。请参阅the docs“重塑和数据透视表”。
  • 你可以看看“dataframe.groupby”(和pivot_table不太一样,但是一个有趣的方法)和“dataframe.reindex”方法

标签: python indexing pandas


【解决方案1】:

它(几乎)和你所说的完全一样:

df.pivot_table(index="a", columns="b", values="c", fill_value=0)

给予

b  cat  dog  rat
a               
1    1    2    6
2    2    0    0
3    4    1    0

HTH

【讨论】:

  • 您也可以传递fill_value=0 来填充缺失值。
【解决方案2】:

http://pandas.pydata.org/pandas-docs/dev/reshaping.html

从您提供的示例数据框开始,

df.pivot(index='a', columns='b', values='c')

将产生几乎完全符合您要求的输出。

FWIW,df.melt() 是相反的转换。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-01-29
    • 1970-01-01
    • 2019-11-14
    • 2015-07-10
    • 2021-05-24
    • 1970-01-01
    • 1970-01-01
    • 2022-11-26
    相关资源
    最近更新 更多