gpt4 book ai didi

python - 计算一个 DataFrame 中的条件值并将结果添加到另一个 DataFrame

转载 作者:行者123 更新时间:2023-12-04 07:36:01 25 4
gpt4 key购买 nike

我有两个 DataFrames :

df1 = pd.DataFrame({"id": [1, 2, 3, 4]})

df2 = pd.DataFrame({"id": [1, 1, 2, 4, 4, 4],
"text": ["a", "a", "b", "a", "b", "b"]})
输出 df1 :
   id
0 1
1 2
2 3
3 4
输出 df2 :
   id value
0 1 a
1 1 a
2 2 b
3 4 a
4 4 b
5 4 b
我的目标是在 df1 中添加三列.
count_all我想在df2中计算相应的id。例如。 id 4 在 df2 中存在 3 次。
count_a我想在 df2 中计算相应的 id,其中文本值 == a。
count_b我想计算 df2 中文本值 == b 中相应的 id。
   id  count_all  count_a  count_b
0 1 2 2 0
1 2 1 0 1
2 3 0 0 0
3 4 3 1 2
如何用 Pandas 做到这一点?

最佳答案

使用 crosstab margins参数,添加缺失的索引值或更改列排序 DataFrame.reindex , 通过 DataFrame.add_prefix 更改列名称最后加入 df1来自 DataFrame.join :

df = (df1.join(pd.crosstab(df2['id'], df2['text'], margins=True)
.reindex(index=df1['id'].unique(),
columns=['All'] + df2['text'].unique().tolist(),
fill_value=0)
.add_prefix('count_'), on='id'))
print (df)
id count_All count_a count_b
0 1 2 2 0
1 2 1 0 1
2 3 0 0 0
3 4 3 1 2

关于python - 计算一个 DataFrame 中的条件值并将结果添加到另一个 DataFrame,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67737384/

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