gpt4 book ai didi

python - 具有非数字数据的索引列中具有重复项的 Pivot/Groupby 数据框

转载 作者:太空宇宙 更新时间:2023-11-04 01:56:30 24 4
gpt4 key购买 nike

假设我有以下示例数据框:

df1 = pd.DataFrame({'col1': ['A', 'A', 'B', 'A'], 'col2': ['CA', 'DA', 'CA', 'CA'], 'col3': [1, 1, 1, 2]})


Out[25]:

col1 col2 col3
0 A CA 1
1 A DA 1
2 B CA 1
3 A CA 2

我想按“col3”作为索引,“col1”作为新列(在本例中,列是“A”或“B”)对这个表进行分组,值应该是“col2”。

我用 pivot_table 试过了(也用了 pivot):

pd.pivot_table(df1,index='col3', columns="col1", values=['col2'])

在这种情况下,错误是:No numeric types to aggregatepivot 命令的情况下,错误是:多个索引。这两种情况对我来说似乎都是合理的。但是有什么选择吗?当我对一列有两个值时,我更喜欢以下结果:

  A                B
1 ['CA', 'DA'] CA
2 'CA' NaN

最佳答案

对于输出中包含缺失值的所有列表,添加自定义 lambda 函数:

df1 = pd.pivot_table(df1,index='col3', columns="col1", values='col2',
aggfunc = lambda x: x.tolist())
print (df1)
col1 A B
col3
1 [CA, DA] [CA]
2 [CA] NaN

如果需要标量而不是一个元素列表,请添加 if-else 语句:

df1 = pd.pivot_table(df1,index='col3', columns="col1", values='col2', 
aggfunc = lambda x: x.tolist() if len(x) > 1 else x.iat[0])
print (df1)
col1 A B
col3
1 [CA, DA] CA
2 CA NaN

关于python - 具有非数字数据的索引列中具有重复项的 Pivot/Groupby 数据框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56703268/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com