Python 如何使用pandas.DataFrame列作为索引、列和值?
我似乎不知道如何以可搜索的方式问这个问题,但我觉得这是一个简单的问题 给定一个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
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