📅  最后修改于: 2023-12-03 14:55:39.561000             🧑  作者: Mango
在数据分析和处理中,常常需要根据一列数据的值来填充另一列的值。使用 Pandas 库可以轻松地实现这一操作。
下面我们通过几个示例来介绍如何根据另一列 pandas 中的值填充一列。
例如,我们有一份数据集包含两列:'age' 和 'category'。现在需要根据 'category' 列的值对 'age' 列进行填充。代码实现如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'age': [25, 30, 35, 40],
'category': ['Young', 'Middle', 'Middle', 'Old']})
# 创建一个字典,用于指定不同的填充值
age_map = {'Young': 20, 'Middle': 35, 'Old': 50}
# 根据 'category' 列的值填充 'age' 列
df['new_age'] = df['category'].map(age_map)
print(df)
输出结果如下:
age category new_age
0 25 Young 20
1 30 Middle 35
2 35 Middle 35
3 40 Old 50
在代码中,我们通过创建一个字典 age_map 来指定不同的填充值。然后使用 map() 函数,将 'category' 列中的值映射到 age_map 中对应的值。最后将新的填充结果存储到 'new_age' 列中。
有时候,我们需要根据多个条件对一列数据进行填充。例如,如果 'category' 列的值为 'Middle',并且 'age' 列的值大于等于 35,我们希望将 'age' 列的值填充为 40。代码实现如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'age': [25, 30, 35, 40],
'category': ['Young', 'Middle', 'Middle', 'Old']})
# 根据多个条件填充 'age' 列的值
df.loc[(df['category'] == 'Middle') & (df['age'] >= 35), 'new_age'] = 40
df['new_age'].fillna(df['age'], inplace=True)
print(df)
输出结果如下:
age category new_age
0 25 Young 25.0
1 30 Middle 30.0
2 35 Middle 40.0
3 40 Old 40.0
在代码中,我们使用 loc() 函数定位满足多个条件的行,并将适当的值填充到 'new_age' 列中。最后,我们使用 fillna() 函数将剩余的缺失值填充为 'age' 列中的值。
有时候,我们需要根据一列的缺失值来填充另一列的值。例如,如果 'new_age' 列的值缺失,我们希望使用 'age' 列的值进行填充。代码实现如下:
import pandas as pd
import numpy as np
df = pd.DataFrame({'age': [25, 30, 35, np.NaN],
'category': ['Young', 'Middle', 'Middle', 'Old'],
'new_age': [np.NaN, 35, np.NaN, np.NaN]})
# 根据 'new_age' 列的缺失值填充 'age' 列
df['new_age'].fillna(df['age'], inplace=True)
print(df)
输出结果如下:
age category new_age
0 25.0 Young 25.0
1 30.0 Middle 35.0
2 35.0 Middle 35.0
3 NaN Old NaN
在代码中,我们使用 fillna() 函数将 'new_age' 列中的缺失值填充为 'age' 列中的值。
通过以上示例,我们可以发现 Pandas 库提供了多种便捷的方式来根据一列数据的值来填充另一列的值。