python - Count_values 具有 where 条件来计算一列相对于其他列的值

标签 python pandas dataframe

我正在对我的数据进行一些 EDA,即 pandas 数据框架,但我陷入了这一点。我不知道如何计算政党==共和党或民主党的婴儿的值(value)观。我想对 arty== 共和党或民主党的所有列应用 value_counts。

   party infants water budget physician salvador religious satellite 
republican  n     y      n         y        y         y         n   
republican  n     y      n         y        y         y         n   
democrat    ?     y      y         ?        y         y         n   
democrat    n     y      y         n        ?         y         n   
democrat    y     y      y         n        y         y         n 

答案应该是这样的

party           infants 
democrat.    y=1, n=1, ?=1
republican   y=0, n=2, ?=0

对于所有列都是如此。我已经尝试过类似的事情。

infants_count = data["infants"].value_counts().where(data['party']=="democrat")
infants_count.loc['y']

最佳答案

让我们尝试一下:

df_out = df.groupby('party')['infants'].value_counts().unstack(0).fillna(0)

df_out.apply(lambda x: ','.join(x.index +'='+x.astype(int).astype(str)))\
      .rename('infant')\
      .reset_index()

输出:

        party       infant
0    democrat  ?=1,n=1,y=1
1  republican  ?=0,n=2,y=0

更新回答下面的评论:

df_out = df.groupby('party')['infants'].value_counts().unstack(-1).fillna(0)

df_out

输出:

infants       ?    n    y
party                    
democrat    1.0  1.0  1.0
republican  0.0  2.0  0

绘图

df_out = df.groupby('party')['infants'].value_counts().unstack(-1).fillna(0)
ax = df_out.plot.bar(stacked=True)

输出:

enter image description here

选择单个值:

df_out.loc['democrat','y']

输出:

1.0

关于python - Count_values 具有 where 条件来计算一列相对于其他列的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52346617/

相关文章:

python - 用 Python 写入 Windows 日志

python - Pandas-拆分多索引数据框

python - 在 Python 中的 UDP 套接字上接收 ICMP 主机不可达消息

python - 在 panda 数据框中创建总行

Python:只要组包含任何特定值,如何过滤数据

python - Pandas Dataframe Groupby 多列

apache-spark - 带有多个参数的 PySpark UDF 返回 null

python - isin、str.contains 和 if 条件的区别?

python - 如何添加路径以便python可以找到程序?

python - 为什么 print ("text"+ str(var1) + "more text"+ str(var2)) 被描述为 "disapproved"?