发布我在 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
这是对我有用的解决方案:
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
您可以使用:
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