gpt4 book ai didi

python - 如何使用 Lambda 应用 pd.crosstab

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

对于以下 pandas 数据框:

col = ["Q1", "Q2", "Cat"]
data = [
["Y","Y","BIN"],
["Y","N","CIN"],
["N","N","BIN"],
["N","Y","CIN"],
["Y","Y","BIN"]
]
df = pd.DataFrame(data, columns=col)

输出df:

Q1 Q2  Cat
0 Y Y BIN
1 Y N CIN
2 N N BIN
3 N Y CIN
4 Y Y BIN

我想一次性使用交叉表“Cat”和“Q1 和 Q2”。我尝试使用 lambda 来申请:

x = pandas.Series(["Q1", "Q2"])
a1 = x.apply(lambda a: pd.crosstab(df[a],df["Cat"]))

我从中得到了一些奇怪的结果:

0    Cat  BIN  CIN
Q1
N 1 1
Y ...
1 Cat BIN CIN
Q2
N 1 1
Y ...
dtype: object

而当我使用 for 循环尝试相同的操作时,我得到了以下期望的结果:

for i in x:
a = pd.crosstab(df[i],df["Cat"])
print(a)

期望的输出:

Cat  BIN  CIN
Q1
N 1 1
Y 2 1
Cat BIN CIN
Q2
N 1 1
Y 2 1

请帮助我解决使用 apply + lambda 进行交叉表时发生的错误。

最佳答案

您可能不需要将 lambda 与交叉表一起使用

pd.crosstab([df.Q1, df.Q2], df.Cat)

关于python - 如何使用 Lambda 应用 pd.crosstab,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58968757/

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