パンダのDataFrameに国名の列があります。if-else条件を使用して列にさまざまなフィルターを適用し、それらの条件を使用してそのDataFrameに新しい列を追加する必要があります。
現在のデータフレーム:-
Company Country
BV Denmark
BV Sweden
DC Norway
BV Germany
BV France
DC Croatia
BV Italy
DC Germany
BV Austria
BV Spain
私はこれを試しましたが、これでは、何度も何度も国を定義する必要があります。
Bookings_d2.loc [(bookings_d2.Country == 'デンマーク')| (bookings_d2.Country == 'ノルウェー')、 '国'] = Bookings_d2.Country
RIでは現在このようなifelse条件を使用していますが、これと同じことをPythonで実装したいと思います。
Rコード例1:ifelse(bookings_d2 $ COUNTRY_NAME%in%c( 'Denmark'、 'Germany'、 'Norway'、 'Sweden'、 'France'、 'Italy'、 'Spain'、 'Germany'、 'Austria' 、 'Netherlands'、 'Croatia'、 'Belgium')、as.character(bookings_d2 $ COUNTRY_NAME)、 'Others')
Rコード例2:ifelse(bookings_d2 $ country%in%c( 'Germany')、ifelse(bookings_d2 $ BOOKING_BRAND%in%c( 'BV')、 'Germany_BV'、 'Germany_DC')、bookings_d2 $ country)
期待されるDataFrame:-
Company Country
BV Denmark
BV Sweden
DC Norway
BV Germany_BV
BV France
DC Croatia
BV Italy
DC Germany_DC
BV Others
BV Others
次を使用できます。
例1:またはで使用Series.isin
しますが、必要な反転マスク:numpy.where
loc
~
#removed Austria, Spain
L = ['Denmark','Germany','Norway','Sweden','France','Italy',
'Germany','Netherlands','Croatia','Belgium']
df['Country'] = np.where(df['Country'].isin(L), df['Country'], 'Others')
代替:
df.loc[~df['Country'].isin(L), 'Country'] ='Others'
例2:使用numpy.select
またはネストnp.where
:
m1 = df['Country'] == 'Germany'
m2 = df['Company'] == 'BV'
df['Country'] = np.select([m1 & m2, m1 & ~m2],['Germany_BV','Germany_DC'], df['Country'])
代替:
df['Country'] = np.where(~m1, df['Country'],
np.where(m2, 'Germany_BV','Germany_DC'))
print (df)
Company Country
0 BV Denmark
1 BV Sweden
2 DC Norway
3 BV Germany_BV
4 BV France
5 DC Croatia
6 BV Italy
7 DC Germany_DC
8 BV Others
9 BV Others
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加