首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >对多列数据帧pandas中的一行元素进行计数

对多列数据帧pandas中的一行元素进行计数
EN

Stack Overflow用户
提问于 2020-07-09 05:09:08
回答 1查看 26关注 0票数 1

嗨,我得数一数病人一天吃多少药。病人每天服用几种不同的药物,剂量也不同。初始数据如下所示:

代码语言:javascript
复制
df_data={'med1':['Prednisolone','Prednisolone','Folic acid','Folic acid','Prednisolone','Enbrel','Prednisolone'],
    'med2': [np.nan, np.nan, 'Folic acid','Folic acid',np.nan,'Methotrexate pill',np.nan],
    'med3':[np.nan, np.nan,'Prednisolone','Prednisolone',np.nan,'Prednisolone',np.nan]}

df_data=pd.DataFrame(df_data)
df_data

    med1            med2        med3
------------------------------------------
0   Prednisolone    NaN         NaN
1   Prednisolone    NaN         NaN
2   Folic acid  Folic acid      Prednisolone
3   Folic acid  Folic acid      Prednisolone
4   Prednisolone    NaN         NaN
5   Enbrel  Methotrexate pill   Prednisolone
6   Prednisolone    NaN         NaN

我想要得到的是为每种药物创建新列的计数。我希望它看起来像这样:

代码语言:javascript
复制
    med1       med2    med3             Prednisolone Folic acid Enbrel  Methotrexate pill
---------------------------------------------------------------------------------
0   Prednisolone        NaN       NaN              1       0       0        0
1   Prednisolone        NaN       NaN              1       0       0        0
2   Folic acid    Folic acid    Prednisolone       1       2       0.       0
3   Folic acid    Folic acid    Prednisolone       1       2       0        0
4   Prednisolone        NaN       NaN              1       0       1        1
5   Enbrel  Methotrexate pill   Prednisolone       1       0       1        1
6   Prednisolone       NaN        NaN              1       0       0        0

我不知道该怎么做。每列一个热编码,然后求和?还有更简单的建议吗?

EN

回答 1

Stack Overflow用户

发布于 2020-07-09 05:16:58

我们可以使用stack + str.get_dummies

代码语言:javascript
复制
s=df_data.stack().str.get_dummies().sum(level=0)
   Enbrel  Folic acid  Methotrexate pill  Prednisolone
0       0           0                  0             1
1       0           0                  0             1
2       0           2                  0             1
3       0           2                  0             1
4       0           0                  0             1
5       1           0                  1             1
6       0           0                  0             1
df=df.join(s)
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62803677

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档