gpt4 book ai didi

python - Pandas 多列中最常见的值

转载 作者:太空宇宙 更新时间:2023-11-03 15:00:29 25 4
gpt4 key购买 nike

我有一系列列数不规则的数据,我需要使用 pandas 从跨多个列的拆分部分中确定最常见的值。我的意思的一个例子是,如果我知道我的同事每天午餐时吃的是哪种奶酪:

Idx Name   Cheese1   Cheese2   Cheese3
0 Evan Gouda NaN NaN
1 John Cheddar Havarti Blue
2 Evan Cheddar Gouda NaN
3 John Havarti Swiss NaN

我正在寻找能够提供结果数据透视表的某种功能:

Name    Cheese    Pct
Evan Gouda .66
John Havarti .4

我也不知道每次运行脚本时需要包含多少列,只是它们的格式都是“奶酪”+索引。如果 John 第二天带着四 block 奶酪出现,我将需要添加第四列并且分析脚本需要能够处理它。

最佳答案

import io
import pandas as pd

data = io.StringIO("""\
Idx Name Cheese1 Cheese2 Cheese3
0 Evan Gouda NaN NaN
1 John Cheddar Havarti Blue
2 Evan Cheddar Gouda NaN
3 John Havarti Swiss NaN
4 Rick NaN NaN NaN
""")
df = pd.read_csv(data, delim_whitespace=True)

def top_cheese(g):
cheese_cols = [col for col in g.columns if col.startswith('Cheese')]
try:
out = (g[cheese_cols].stack().value_counts(normalize=True)
.reset_index().iloc[0])
out.index = ['Cheese', 'Pct']
return out
except IndexError:
return pd.Series({'Cheese': 'None', 'Pct': 0})


output = df.groupby('Name').apply(top_cheese)
print(output)

输出:

       Cheese       Pct
Name
Evan Gouda 0.666667
John Havarti 0.400000
Rick None 0.000000

关于python - Pandas 多列中最常见的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38357461/

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