使用2个参数在df中创建新列

亲爱的

我需要根据2个条件创建一个新列,即人口超过50,000的国家/地区和降序恢复率。


df1['Recovery Rate'] = df1.apply(lambda x: (x['Total Recovered']/x['Total Infected']), axis = 1)

df1['Populated Country'] = df1.apply(if lambda row: row.Country == Country and (row: row.Population 2020 (in thousands) >= 50000), axis = 1) 

df1.sort_values(['Recovery Rate'], ascending = [False])

print(df1[['Populated Country','Recovery Rate']].head(10))

但是我在新列代码中遇到以下错误。


File "<ipython-input-25-ab35558abd61>", line 4
df1['Populated Country'] = df1.apply(if lambda row: row.Country == Country and (row: row.Population 2020 (in thousands) >= 50000), axis = 1)
                                         ^
SyntaxError: invalid syntax
>Country    Daily Tests Daily Tests per 100000 people   Pop density per sq. km  Urban Population (%)    Start Date of Quarantine/Lockdown   Start Date of Schools Closure   Start Date of Public Place Restrictions Hospital Beds per 1000 people   M-to-F Gender Ratio at Birth    ... Death rate from lung diseases per 100k people for male  Median Age  GDP 2018    Crime Index Population 2020 (in thousands)  Smokers in Population (%)   % of Females in Population  Total Infected  Total Deaths    Total Recovered
>0  Albania NaN NaN 105 63  NaN NaN NaN 2.9 1.08    ... 17.04   32.9    1.510250e+10    40.02   2877.797    28.7    49.063095   949 31  742
>1  Algeria NaN NaN 18  73  NaN NaN NaN 1.9 1.05    ... 12.81   28.1    1.737580e+11    54.41   43851.044   15.6    49.484268   7377    561 3746
>2  Argentina   NaN NaN 17  93  3/20/2020   NaN NaN 5.0 1.05    ... 42.59   31.7    5.198720e+11    62.96   45195.774   21.8    51.237348   8809    393 2872
>3  Armenia 694.0   2.342029    104 63  NaN NaN NaN 4.2 1.13    ... 35.99   35.1    1.243309e+10    20.78   2963.243    24.1    52.956577   5041    64  2164
>4  Australia   31635.0 12.405939   3   86  NaN NaN 3/23/2020   3.8 1.06    ... 22.16   38.7    1.433900e+12    42.70   25499.884   14.7    50.199623   7072    100 6431

这是数据-https://raw.githubusercontent.com/ptw2/PRGA/main/covid19_by_country.csv

这是我应该得到的结果

>         Country  Recovery Rate
>17         China       0.943459
>87      Thailand       0.941972
>47   South Korea       0.906031
>32       Germany       0.875705
>95       Vietnam       0.811728

有人可以帮忙吗?

帕克佩

在这种情况下,定义一个函数进行计算然后在lambda语句中应用该函数会更干净:

def compute_rr(row):
    if row['Population 2020 (in thousands)'] >= 50000:
        return row['Total Recovered'] / row['Total Infected']

df1['Recovery Rate'] = df1.apply(lambda row: compute_rr(row), axis = 1)
df1 = df1.sort_values(['Recovery Rate'], ascending = [False])

print(df1[['Country','Total Recovered','Total Infected','Recovery Rate']].head())

#Output:
        Country  Total Recovered  Total Infected  Recovery Rate
17        China            79310           84063       0.943459
87     Thailand             2857            3033       0.941972
47  South Korea            10066           11110       0.906031
32      Germany           155681          177778       0.875705
95      Vietnam              263             324       0.811728

如果您确实想更改数据框以消除人口少于5万的国家/地区,只需将以下行添加到上一个代码的底部即可。它会删除“恢复率”列中所有包含NaN的行。

df1 = df1[df1['Recovery Rate'].notna()]

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用R中的查找表基于另一个df创建新列

如何在 df 中创建一个新列并使用 shift 函数?

根据df1中的列值在df2中查找相交的值,并使用df1中的检索值创建新列(不匹配的列名)

使用2列数据创建4个新的csv列

使用 R 从一个 df 及其不同的列值创建一个新的 df

使用基于列vale的字典中的值在df中创建新列

从split()的第一个值在DF中创建新列

遍历 df 中的行并根据这些值创建一个新列

如何使用 2 个条件创建新列

如何创建一个func,以便它检查df中是否存在列并返回带有新col的df?

Python 2.7:使用另一列中的子字符串创建新的df列

使用 for 循环在 Pandas 中创建一个新列?

如何在熊猫中基于2个以上条件创建新的df.column?

使用多个条件的df中的新列

根据逻辑列的顺序在DF中创建多个新列

熊猫:通过比较2个不同数据框中的2个列来创建新列

通过使用列表理解遍历多个其他列中的每一行来创建 2 个新列

使用带有两个参数的函数从两个现有列创建两个新列

如何在 df 中创建一个新列,在所选列之间具有最小值?

使用函数中的参数创建新类

R - 基于在 df 中搜索向量元素创建新列

使用 apply 函数向 dfs 列表中的每个 df 添加一个新列

如何使用列A和B使用DF2中的值在DF1上创建列C

使用Pandas df.apply创建新列

在分组的熊猫df中使用IF-THEN创建新列

如何创建一个新的 DF,其中最后一列乘以 3/2 过滤另一个 DF 的 ID #?

通过在df2中映射同一列在df1中创建新列,并在pandas中应用特定的计算

使用子集创建新的df

使用 DataFrame.apply 使用 Pandas 中的特定列创建一个新列