如何将 pandas 数据框中某列中的数值与另一列中的值切换?

问题描述 投票:0回答:2

发布我在 Stack Overflow 上没有看到的问题的解决方案。我的 pandas 数据框中有两列。其中一个数值需要与另一列中的值进行切换。

创建数据框:

df = pd.DataFrame([['Captain', 'Crunch', 72],
               ['Trix', 36, 'Rabbit'],
               ['Count', 'Chocula', 41],
               ['Tony', 54, 'Tiger'],
               ['Buzz', 28, 'Bee'],
               ['Toucan', 'Sam', 38]],
              columns=['first_name', 'last_name', 'age'])

数据框输入:

  first_name    last_name       age
0   Captain        Crunch        72
1   Trix               36    Rabbit
2   Count         Chocula        41
3   Tony               54     Tiger
4   Buzz               28       Bee
5   Toucan            Sam        38

所需输出:

 first_name     last_name       age
0   Captain        Crunch        72
1   Trix           Rabbit        36
2   Count          Chocula       41
3   Tony            Tiger        54
4   Buzz              Bee        28
5   Toucan            Sam        38
python pandas numpy swap
2个回答
0
投票

这是对我有用的解决方案:

import numpy as np
df['last_name'],df['age'] = np.where(df['last_name'].apply(is_numeric),(df['age'], df['last_name']), (df['last_name'], df['age']))
df

0
投票

您可以使用:

m = pd.to_numeric(df['age'], errors='coerce').isna()
df.loc[m, ['age', 'last_name']] = df.loc[m, ['last_name', 'age']].values

输出:

  first_name last_name age
0    Captain    Crunch  72
1       Trix    Rabbit  36
2      Count   Chocula  41
3       Tony     Tiger  54
4       Buzz       Bee  28
5     Toucan       Sam  38
© www.soinside.com 2019 - 2024. All rights reserved.