1

私は非常に単純なことをしたいのですが、Python/Spark(1.5)/Dataframe でそれを行う方法を理解できません (それは私にとってすべて新しいことです)。

元のデータセット:

code| ISO | country
1   | AFG | Afghanistan state
2   | BOL | Bolivia Plurinational State

新しいデータセット:

code| ISO | country
1   | AFG | Afghanistan
2   | BOL | Bolivia

私はこのようなことをしたいと思います(疑似Pythonで?):

iso_to_country_dict = {'AFG': 'Afghanistan', 'BOL': 'Bolivia'}

def mapCountry(iso,country):
    if(iso_to_country_dict[iso] is not empty):
        return iso_to_country_dict[iso]
    return country

dfg = df.select(mapCountry(df['ISO'],df['country']))

簡単にするために、mapCountry は次のようになります。

def mapCountry(iso,country):
    if(iso=='AFG'):
        return 'Afghanistan'
    return country

しかし、これにはエラーがあります:ValueError: Cannot convert column into bool:

4

2 に答える 2

1

さて、私は解決策を見つけましたが、これが最もクリーンな方法であるかどうかはわかりません。他のアイデアはありますか?

iso_to_country_dict = {'BOL': 'ボリビア', 'HTI': 'カーボベルデ','COD':'コンゴ','PRK':'韓国','LAO':'ラオス'}

def mapCountry(iso,country):
    if(iso in iso_to_country_dict):
        return iso_to_country_dict[iso]
    return country

mapCountry=udf(mapCountry)

dfg = df.select(df['iso'],mapCountry(df['iso'],df['country']).alias('country'),df['C2'],df['C3'],df['C4'],df['C5'])

注:C1、C2、..C5は他のすべての列の名前です

于 2016-09-06T05:19:15.113 に答える