用where条件计算一列相对于其他列的值

2024-04-19 06:46:49 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在做一些EDA对我的数据,这是熊猫数据帧,我在这一点上卡住了。我不知道如何计算婴儿的价值观,他们的政党=共和党还是民主党。我想在arty==共和党或民主党的所有列上应用value\u 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']

我们将非常感谢您的帮助


Tags: 数据datavaluepartycounteda婴儿价值观
1条回答
网友
1楼 · 发布于 2024-04-19 06:46:49

让我们试试:

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

相关问题 更多 >