希望每个人都好,我对 Python/Pandas 还是很陌生,想知道以下是否可行。我有一个来 self 的数据框的列/问题名称列表。我希望能够将它们传递到我的代码中
Council NPS EASE OSAT
0 CouncilA 5 99 2
1 CouncilB 0 4 2
2 CouncilC 4 1 5
3 CouncilA 1 4 5
4 CouncilB 3 1 3
5 CouncilC 1 4 3
6 CouncilA 4 1 99
7 CouncilB 4 4 1
8 CouncilC 3 3 3
9 CouncilA 2 2 1
10 CouncilB 4 99 4
11 CouncilC 2 2 5
这是我要更新的代码。
df = df[['Council', 'NPS', 'EASE', 'OSAT']]
percent4_5 = df[(df['NPS'] >= 4) & (df['NPS'] <=5 )].groupby(['Council'])['NPS'].count()
base = df[(df['NPS'] >= 0) & (df['NPS'] <=5 )].groupby(['Council'])['NPS'].count()
score = (percent4_5 / base)
目前,如果我想计算“EASE”的分数,我必须将“NPS”替换为“EASE”,因为每个问题的基础都不同。如果代码可以遍历列表并输出“NPS”、“EASE”、“OSAT”的结果,那就太好了。
我希望我能遵守这个论坛的礼节。如果我做错了什么,请告诉我。
Excel 的预期输出: enter image description here
最佳答案
你确实快到了。只需将“Council”设置为索引,然后重复您的操作,但要在整个 DataFrame 上进行。 groupby
操作可以在整个 DataFrame 中进行矢量化。
df = df.set_index('Council')
percent4_5 = df[(df >= 4) & (df <= 5)].groupby(level=0).count()
base = df[(df >= 0) & (df <= 5)].groupby(level=0).count()
score = percent4_5 / base
print(score)
NPS EASE OSAT
Council
CouncilA 0.50 0.333333 0.333333
CouncilB 0.50 0.666667 0.250000
CouncilC 0.25 0.250000 0.500000
关于python - 将列表中的字符串插入数据框公式以在 Pandas 中循环计算,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53551824/