需要 pandas groupby.count() 或 groupby.size.unstack() 来输出我可以使用的数据帧
Need pandas groupby.count() or groupby.size.unstack() to output a dataframe I can use
所以我需要计算每只动物每年某个值出现的次数。我已经设法做到了,但它输出的是单列类型的数据框,而不是工作单元格中的数据。
我用过:
df.groupby(["Animal", "year"])["value"].count()
和:
df.groupby(["Animal", "year", "value"]).size().unstack(fill_value=0)
我尝试了一个数据透视表但它给出了一个错误,在错误消息中它说数据太多但主要错误是“索引包含重复条目”。我有大约 13000 行数据。
我不知道如何处理回复。我不能像使用 Dataframe 那样调用列,我不知道该怎么做。我希望能够在 Dataframe 中创建比例,例如 2020 年动物 1 的值 A 为 10%,值 B 为 90%。
在 count()
创建了一个系列之后,我尝试执行 df.to_frame()
,但它只创建了一个单列 DataFrame。
数据是这样的:
Animal Year Value
1 2020 A
1 2020 A
1 2019 B
1 2019 B
2 2020 A
我需要它是:
Animal Year A B
1 2020 2 0
1 2019 0 2
2 2020 1 0
但是在一个完整的 4 列数据框中,没有被压缩成一列。然后我可以从那里创建百分比比例。
尝试:
x = df.pivot_table(
index=["Animal", "Year"], columns="Value", aggfunc="size", fill_value=0
).reset_index()
x.columns.name = None
print(x)
打印:
Animal Year A B
0 1 2019 0 2
1 1 2020 2 0
2 2 2020 1 0
所以我需要计算每只动物每年某个值出现的次数。我已经设法做到了,但它输出的是单列类型的数据框,而不是工作单元格中的数据。
我用过:
df.groupby(["Animal", "year"])["value"].count()
和:
df.groupby(["Animal", "year", "value"]).size().unstack(fill_value=0)
我尝试了一个数据透视表但它给出了一个错误,在错误消息中它说数据太多但主要错误是“索引包含重复条目”。我有大约 13000 行数据。
我不知道如何处理回复。我不能像使用 Dataframe 那样调用列,我不知道该怎么做。我希望能够在 Dataframe 中创建比例,例如 2020 年动物 1 的值 A 为 10%,值 B 为 90%。
在 count()
创建了一个系列之后,我尝试执行 df.to_frame()
,但它只创建了一个单列 DataFrame。
数据是这样的:
Animal Year Value
1 2020 A
1 2020 A
1 2019 B
1 2019 B
2 2020 A
我需要它是:
Animal Year A B
1 2020 2 0
1 2019 0 2
2 2020 1 0
但是在一个完整的 4 列数据框中,没有被压缩成一列。然后我可以从那里创建百分比比例。
尝试:
x = df.pivot_table(
index=["Animal", "Year"], columns="Value", aggfunc="size", fill_value=0
).reset_index()
x.columns.name = None
print(x)
打印:
Animal Year A B
0 1 2019 0 2
1 1 2020 2 0
2 2 2020 1 0