gpt4 book ai didi

python - Pandas:有没有办法将列中的值分组在一起?

转载 作者:行者123 更新时间:2023-12-01 01:32:51 24 4
gpt4 key购买 nike

我正在使用 pandas 来处理 DataFrame,其中有一列称为“Rank”,表示军事军衔。当我对数据使用groupby并创建交叉表时,我注意到Rank中的一些值是同义词。例如,我的交叉表中有“Private 1st Class”、“Private First Class”和“PFC”的单独行。

假设我可以手动创建一个字典将所有这些“同义词”关联在一起,有没有办法让 pandas 将其应用到我的 DataFrame 中,以便所有值都被认为是相同的出于计数、交叉表等目的?因此,对于上面的示例,如果我决定对“PFC”进行标准化,我将创建以下内容:{"Private 1st Class": "PFC", "Private First Class": "PFC"}

我查看了groupby,但据我所知,它按列对整个框架进行排序,并且不支持这样的等效值。如果我错了,有人可以指出我文档的相关部分吗?

最佳答案

举个例子:

数据:

df = pd.DataFrame({"val": [1,2,3,4,5], "key": ["Private 1st class", "Private First Class", "PFC", "other", "other"]})

翻译词典:

translate = pd.DataFrame.from_records({"key": ["Private 1st class", "PFC", "Private First Class"],
"harmonizedkey": ["PFC", "PFC", "PFC"]})

让我们将字典合并到 df:

newdf = pd.merge(df, translate, how = "left", on = "key")

创建一个新的(完整)组:

newdf["newgroup"] = newdf["harmonizedkey"].combine_first(newdf["key"])
newdf

key val harmonizedkey newgroup
0 Private 1st class 1 PFC PFC
1 Private First Class 2 PFC PFC
2 PFC 3 PFC PFC
3 other 4 NaN other
4 other 5 NaN other

现在,使用groupby:

newdf.groupby("newgroup").sum()

val
newgroup
PFC 6
other 9

关于python - Pandas:有没有办法将列中的值分组在一起?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52673881/

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