Augusto E.
Augusto E.

Reputation: 23

Function that returns one value from two columns

I have a DataFrame df:

    Country    Currency 
 1   China       YEN
 2   USA         USD
 3   Russia      USD
 4   Germany     EUR
 5   Nigeria     NGN
 6   Nigeria     USD
 7   China       CNY
 8   USA         EUR 
 9   Nigeria     EUR
10   Sweden      SEK

I want to make a function that reads both of these columns, by column name, and returns a value that indicates if the currency is a local currency or not.

Result would look like this:

    Country    Currency    LCY?
 1   China       YEN        0
 2   USA         USD        1
 3   Russia      USD        0
 4   Germany     EUR        1
 5   Nigeria     NGN        1
 6   Nigeria     USD        0
 7   China       CNY        1 
 8   USA         EUR        0
 9   Nigeria     EUR        0
10   Sweden      SEK        1

I tried this, but it didn't work:

LOCAL_CURRENCY =  {'China':'CNY',
                    'USA':'USD', 
                    'Russia':'RUB',
                    'Germany':'EUR',
                    'Nigeria':'NGN',
                    'Sweden':'SEK'}
def f(x,y):
        if x in LOCAL_CURRENCY and y in LOCAL_CURRENCY:
            return (1)
        else:
            return (0)

Any thoughts?

Upvotes: 1

Views: 23

Answers (1)

Quang Hoang
Quang Hoang

Reputation: 150735

You can use map and compare:

df['LCY'] = df['Country'].map(LOCAL_CURRENCY).eq(df['Currency']).astype(int)

Output:

    Country Currency  LCY
1     China      YEN    0
2       USA      USD    1
3    Russia      USD    0
4   Germany      EUR    1
5   Nigeria      NGN    1
6   Nigeria      USD    0
7     China      CNY    1
8       USA      EUR    0
9   Nigeria      EUR    0
10   Sweden      SEK    1

Upvotes: 2

Related Questions