熊猫为合并问题处理合并的DF

时间:2020-05-02 23:50:25

标签: python pandas

我无法将两个数据帧标准化为合并的数据帧。本质上,我想以一个包含以下列的数据框结尾:year, country, net_activity_amount,这是合并两个数据框的结果,一个包含year, donor_country, commitment_amount_usd,另一个包含year, receiving_country, commitment_amount_usd。我目前正在获得一个重复了一年的数据框,并且某些国家/地区仅存在于一个或另一个数据框中,这就是outerjoin的原因。

这是我当前拥有的示例行:1977, Saudi Arabia, 3000000, Saudi Arabia, 3000000, 0

我如何有效地做到这一点?

def clean_data():
    raw_data = get_raw_data()

    donor_df = raw_data[['year', 'donor', 'commitment_amount_usd_constant']]

    recip_df = raw_data[['year', 'recipient', 'commitment_amount_usd_constant']]

    merged_df = donor_df.merge(recip_df, how='outer', left_on=["year", "donor"], right_on=["year", "recipient"])

    merged_df = merged_df.fillna(0)

    merged_df['net_donation_activity'] = merged_df.apply(lambda row: calc_net_value(row), axis=1)

    print(merged_df)

def get_raw_data():
    return pd.read_csv('aiddata-countries-only.csv')

def calc_net_value(row):
    # lambda for calculating net diff
    return float(row['commitment_amount_usd_constant_x'] - row['commitment_amount_usd_constant_y'])

def normalize_data(row):
    return []

0 个答案:

没有答案