Используйте строчный столбец в пандах - PullRequest
0 голосов
/ 28 мая 2018

Как заменить несколько версий самым простым способом?

Вот мои данные:

No  Device
1   asus
2   Xiaomi
3   xiaomi
4   Asus
5   Samsung

Я хочу сделать это:

No  Device
1   Asus
2   Xiaomi
3   Xiaomi
4   Asus
5   Samsung

Что я сделалэто:

f = {'xiaomi':'Xiaomi', 'asus':'Asus'}
df['Device'] = df['Device'].map(f)

Но результат:

No  Device
1   Asus
2   NaN
3   Xiaomi
4   NaN
5   NaN

Ответы [ 3 ]

0 голосов
/ 28 мая 2018

Почему бы просто не пойти с str.title?

df['Device'] = df.Device.str.title()  
df

   No   Device
0   1     Asus
1   2   Xiaomi
2   3   Xiaomi
3   4     Asus
4   5  Samsung

Нет необходимости в отображении или словаре таким образом.

0 голосов
/ 28 мая 2018

Вам нужно не отображение, а replacing, т. Е.

df['Device'] = df['Device'].replace(f)

0       Asus
1     Xiaomi
2     Xiaomi
3       Asus
4    Samsung
Name: Device, dtype: object

​
0 голосов
/ 28 мая 2018

Добавить fillna или combine_first при необходимости dictionary и map:

df['Device'] = df['Device'].map(f).fillna(df['Device'])

Или:

df['Device'] = df['Device'].map(f).combine_first(df['Device'])

Или используйте только str.capitalize, если нужна только первая заглавная буква:

print (df)
   No     Device
0   1  asus best
1   2     Xiaomi
2   3     xiaomi
3   4       Asus
4   5    Samsung

df['Device'] = df['Device'].str.capitalize()
print (df)
   No     Device
0   1  Asus best
1   2     Xiaomi
2   3     Xiaomi
3   4       Asus
4   5    Samsung
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...