为了账号安全,请及时绑定邮箱和手机立即绑定

计算值并创建新数据框

计算值并创建新数据框

慕村9548890 2023-02-22 15:13:20
我有一个看起来像这样的数据框:df    Daily Risk Score0   13.01   10.02   25.03   7.04   18.0... ...672 14.0673 9.0674 15.0675 6.0676 13.0我想计算值 0<x<9、9<x<17 和 >=17 出现的次数。我试过这样做:df1=pd.cut(df['Daily Risk Score'], bins=[0, 9, 17, np.inf], labels=['Green','Orange','Red'])然而,所有这一切只是将值更改为标签。我想要的是一个新的数据框,它只有这样的值的计数:df1Green   Orange   Redx   y   z我缺少什么来完成这项任务?
查看完整描述

3 回答

?
蓝山帝景

TA贡献1843条经验 获得超7个赞

使用.groupbyand.transpose在此代码的末尾。


df1 = pd.cut(df['Daily Risk Score'],

             bins=[0, 9, 17, np.inf],

             labels=['Green','Orange','Red']).reset_index(). \

             groupby('Daily Risk Score').count().transpose()

df1

输出:


 Daily Risk Score   Green   Orange  Red

 index              3       4       2


查看完整回答
反对 回复 2023-02-22
?
慕仙森

TA贡献1827条经验 获得超8个赞

尝试:


df1=df.groupby(pd.cut(df['Daily Risk Score'], bins=[0, 9, 17, np.inf], labels=['Green','Orange','Red'])).size()

df1:


          Daily Risk Score

Green     3

Orange    5

Red       2

dtype: int64

或者

df1=df.groupby(pd.cut(df['Daily Risk Score'], bins=[0, 9, 17, np.inf], labels=['Green','Orange','Red'])).size()

df2 = pd.DataFrame(df1.reset_index().values.T)

df2.columns = df2.iloc[0]

df2 = df2[1:]

df2:


    Green   Orange  Red

1   3       5       2


查看完整回答
反对 回复 2023-02-22
?
慕丝7291255

TA贡献1859条经验 获得超6个赞

我尝试了一些不同的方法。这也很容易。尝试一下,如果您遇到任何问题/错误,请告诉我。干得好:


df["col"] = 0

for i in range(len(df)):

    if 0<df["Daily Risk Score"][i]<9:

        df["col"][i] = "0<Daily Risk Score<9"

    elif 9<df["Daily Risk Score"][i]<17:

        df["col"][i] = "9<Daily Risk Score<17"

    elif 9<df["Daily Risk Score"][i]<17:

        df["col"][i] = "Daily Risk Score>=17"

    else:

        df["col"][i] = "other"

df["col"].value_counts()

df.drop(columns=["col"])


查看完整回答
反对 回复 2023-02-22
  • 3 回答
  • 0 关注
  • 89 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信