如何使用np.where从数据帧分配值

2024-04-25 22:35:06 发布

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

我试图使用np.where使用2个数据帧,但是我得到一个错误,说这个列有问题

我的代码如下:

sum_d = source.groupby('Country')['Deaths'].sum() 
sum_c = source.groupby('Country')['Confirmed'].sum()    

Deaths = pd.DataFrame(sum_d)
Confirmed = pd.DataFrame(sum_c)

frames = [Deaths, Confirmed] 
Grouped = pd.concat(frames, axis=1)

Grouped.loc[:,'Mortality Rate Country'] = Grouped['Deaths']/Grouped['Confirmed']

直到这里它正常工作,我得到这个结果:

Grouped.head()

                 Deaths  Confirmed  Mortality Rate Country
Country                                               
Afghanistan       1         40                0.025000
Albania           2         89                0.022472
Algeria          17        201                0.084577
Andorra           1        113                0.008850
Angola            0          2                0.000000

source.head()

                    Country         Last Update  Confirmed  Deaths  Recovered  
Province/State                                                              
Hubei             China 2020-03-22 09:43:06      67800    3144      59433   
NaN               Italy 2020-03-22 18:13:20      59138    5476       7024   
NaN               Spain 2020-03-22 23:13:18      28768    1772       2575   
NaN             Germany 2020-03-22 23:43:02      24873      94        266   
NaN                Iran 2020-03-22 14:13:06      21638    1685       7931   

然后我尝试分配一些值,比较我得到的值错误:

source['Mortality Rate Country'] = np.where(source['Country'] == Grouped['Country'], 
                                        Grouped['Mortality Rate Country'],
                                        source['Mortality Rate'])

错误显示:

关键错误:“国家”

在处理上述异常期间,发生了另一个异常:

任何提示或想法都将不胜感激

提前谢谢


Tags: sourcedataframerate错误npnanwherecountry
1条回答
网友
1楼 · 发布于 2024-04-25 22:35:06

如果有独特的国家:

source['Mortality Rate Country'] = source['Deaths']/source['Confirmed']

如果存在重复的国家/地区:

对于原始数据中由聚合值填充的新列,您的代码应简化为^{}

source['Deaths1'] = source.groupby('Country')['Deaths'].transform('sum') 
source['Confirmed1'] = source.groupby('Country')['Confirmed'].transform('sum') 

source['Mortality Rate Country'] = source['Deaths1']/source['Confirmed1']

相关问题 更多 >