Как я могу поменять определенные значения столбцов в Dataframe? - PullRequest
0 голосов
/ 24 мая 2018

У меня большой фрейм данных, это примерная часть фрейма данных.Хочу поменять местами значения Маската и Шанхая.

 df =
 City   Score

 Istanbul   6.0749
 2.23607    Muscat
 Prague     4.38576
 1.85958    Shanghai
 Istanbul   6.0749
 Singapore  5.17054

Вывод:

 df = 
 City   Score

 Istanbul   6.0749
 Muscat     2.23607     
 Prague     4.38576
 Shanghai   1.85958     
 Istanbul   6.0749
 Singapore  5.17054

Я запутался, что как я могу применить условие после итерации по фрейму данных, также есть ли другиеальтернатива?

Ответы [ 2 ]

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

Используйте to_numeric с notna для логической маски, а затем поменяйте местами на loc:

m = pd.to_numeric(df['City'], errors='coerce').notna()
#oldier versions of pandas
#m = pd.to_numeric(df['City'], errors='coerce').notnull()
df.loc[m,['City','Score']] = df.loc[m,['Score','City']].values

print (df)
        City    Score
0   Istanbul   6.0749
1     Muscat  2.23607
2     Prague  4.38576
3   Shanghai  1.85958
4   Istanbul   6.0749
5  Singapore  5.17054
0 голосов
/ 24 мая 2018

Вы можете использовать:

In [39]: mask = pd.to_numeric(df.Score, errors='coerce').isna()

In [40]: s = df.Score.copy()

In [41]: df.Score[mask] = df.City

In [42]: df.City[mask] = s

In [43]: df
Out[43]: 
        City    Score
0   Istanbul   6.0749
1     Muscat  2.23607
2     Prague  4.38576
3   Shanghai  1.85958
4   Istanbul   6.0749
5  Singapore  5.17054
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...