使用另一个数据框计算新值

时间:2018-08-30 02:27:45

标签: pandas

我正在寻找一种方法,将数据框中的所有列与另一个df中的列的值相除。可以使用下面提到的2个选项中的任何一个。

df_amenity_normalized = df_amenity.apply( 
    lambda row: row / df_targets['Population'].loc[row.name], axis=1)

或加入表,然后计算:

ndf=df_amenity.merge(df_targets, left_index=True, right_index=True) 
ndft=ndf.apply(lambda x: x/ndf.Population, axis='rows' )
df_amenity_normalized1 = ndft.drop(columns=['Population', 'GNI', 'GDP', 'BM Dollar', 'HDI'])

还有其他方法可以达到相同的结果吗?


数据可在此处...

df_targets = pd.read_csv('https://raw.githubusercontent.com/njanakiev/osm-predict-economic-measurements/master/data/economic_measurements.csv', index_col='country')
df_targets.drop(columns='country_code', inplace=True)
df_targets = df_targets[['Population', 'GNI', 'GDP', 'BM Dollar', 'HDI']]

df_amenity = pd.read_csv('https://raw.githubusercontent.com/njanakiev/osm-predict-economic-measurements/master/data/country_amenity_counts.csv')
df_amenity.set_index('country', inplace=True)
df_amenity.drop(columns='country_code', inplace=True)

1 个答案:

答案 0 :(得分:1)

您可以使用熊猫的df.div()功能。见下文:

df_amenity.div(df_targets['Population'], axis = 0)