gpt4 book ai didi

python - 如何使用列中的值来识别要在不同数据框中分析的列?

转载 作者:太空宇宙 更新时间:2023-11-04 02:10:59 24 4
gpt4 key购买 nike

我有两个pandas dataframes,一个是原始数据,另一个是基于第一个dataframe的数据分析得到的分析输出。设置如下:

df1
P1T P2T P3T
P N P
N P U
P P U
U U N

df2
Indicator Indicator State Occurrences
P1T P
P1T N
P1T U
P2T P
P2T N
P2T U
P3T P
P3T N
P3T U

df1 中,每一列代表一个“指标”,每个指标可以有三种状态:“P”、“N”或“U”。

df2 列出了每个“指标”及其可能具有的状态范围,每个代表不同的情况。然后应该计算每个案例的出现次数,并在“出现次数”列中输出该数字。也就是说,

df2
Indicator Indicator State Occurrences
P1T P 2
P1T N 1
P1T U 1
P2T P 2
P2T N 1
P2T U 1
P3T P 1
P3T N 1
P3T U 2

是否可以使用df2['Indicators']列中的值来指定df1中的列进行计数,然后在中的值df2['Indicator State'] 列提供 'countif' 条件?

最佳答案

使用meltgroupbysize对于 MultiIndex 系列:

df3 = (df1.melt(var_name='Indicator', value_name='Indicator State')
.groupby(['Indicator','Indicator State'])
.size()
.rename('Occurrences'))

另一种解决方案 value_countsunstack :

df3 = df1.apply(lambda x: x.value_counts()).unstack().rename('Occurrences')

print (df3)
Indicator Indicator State
P1T N 1
P 2
U 1
P2T N 1
P 2
U 1
P3T N 1
P 1
U 2
Name: Occurrences, dtype: int64

最后join它到原始 DataFrame:

#if necessary remove only NaN column 
df2 = df2.drop('Occurrences', axis=1)
df2 = df2.join(df3, on=['Indicator','Indicator State'])
print (df2)
Indicator Indicator State Occurrences
0 P1T P 2
1 P1T N 1
2 P1T U 1
3 P2T P 2
4 P2T N 1
5 P2T U 1
6 P3T P 1
7 P3T N 1
8 P3T U 2

关于python - 如何使用列中的值来识别要在不同数据框中分析的列?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53745233/

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