Python 如何使用pandas.DataFrame列作为索引、列和值?

Python 如何使用pandas.DataFrame列作为索引、列和值?,python,indexing,pandas,Python,Indexing,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

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

给定一个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”作为填充值

从您给出的示例数据帧开始

df.pivot(index='a', columns='b', values='c')
将产生几乎完全符合您需要的输出

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

它(几乎)与您的说法完全相同:

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


听起来像是你想要的。请参见“重塑和透视表”。您可以查看“dataframe.groupby”(与
pivot\u table
不同,但这是一个有趣的方法)和“dataframe.reindex”方法。您也可以通过
fill\u value=0
来填充缺少的值。
b  cat  dog  rat
a               
1    1    2    6
2    2    0    0
3    4    1    0