gpt4 book ai didi

python - 将 pd.value_counts() 和定义的变量附加到一行数据帧

转载 作者:行者123 更新时间:2023-11-30 22:15:22 24 4
gpt4 key购买 nike

想出一个简单的例子有点困难,但我希望这是有道理的:我有一个循环,可以生成一个变量 name 和一个像这样的数据帧

name = 'store1'
exampledf = pd.DataFrame({'animal': ['bird', 'bird', 'dog', 'cat', 'cat', 'cat']})

我可以使用exampledf['animal'].value_counts()来获取:

cat     3
bird 2
dog 1

所需的输出是将名称和值计数添加到新的df中,如下所示:

store    cat    bird    dog
store1 3 2 1

然后在下一个循环中说我有

name = 'store2'
exampledf = pd.DataFrame({'animal': ['cat', 'cat', 'bird', 'cat', 'cat', 'bird']})

我希望添加它以获得:

store    cat    bird    dog
store1 3 2 1
store2 4 2 0

我希望这是有道理的!

最佳答案

让我们尝试对其进行矢量化。连接您的 DataFrame,调用 str.get_dummies,然后沿索引求和。

df_list = [exampledf1, exampledf2]
names = [name1, name2]

(pd.concat(df_list, axis=0, keys=names)
.animal
.str.get_dummies()
.sum(level=0)
)

bird cat dog
store1 2 3 1
store2 2 4 0

如果您的数据不是 df_listnames 的格式,我强烈建议您找到一种方法来获取它。

<小时/>

另一种方法是在每次循环迭代时调用df.append。我认为这又慢又难看:

df = pd.DataFrame()

for d, n in zip(df_list, names):
df = df.append(
d.animal.value_counts().to_frame().T.set_index([[n]])
)

df
bird cat dog
store1 2 3 1.0
store2 2 4 NaN

关于python - 将 pd.value_counts() 和定义的变量附加到一行数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50322378/

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