以下是一个示例代码,用于按照自定义优先级选择列值:
def choose_column_value(data, priority):
# 按照优先级对列进行排序
sorted_columns = sorted(data.columns, key=lambda x: priority.index(x))
# 遍历每一行,选择第一个非空的列值
chosen_values = []
for index, row in data.iterrows():
for column in sorted_columns:
if not pd.isna(row[column]):
chosen_values.append(row[column])
break
return chosen_values
在这个示例中,data
是一个包含数据的 pandas DataFrame,priority
是一个列表,其中包含了列的优先级顺序。函数首先根据优先级对列进行排序,然后遍历每一行,在每一行中选择第一个非空的列值,并将其添加到 chosen_values
列表中。最后,函数返回 chosen_values
列表。
使用示例:
import pandas as pd
# 创建示例数据
data = pd.DataFrame({
'A': [1, pd.NA, 3],
'B': [pd.NA, 5, 6],
'C': [7, 8, pd.NA]
})
# 定义优先级顺序
priority = ['B', 'C', 'A']
# 调用函数并打印结果
result = choose_column_value(data, priority)
print(result)
输出结果:
[5, 8, 3]
在这个示例中,我们创建了一个包含三列的 DataFrame,并且每一列都包含了一些空值。然后,我们定义了列的优先级顺序为 ['B', 'C', 'A']
。最后,我们调用 choose_column_value
函数,并打印了返回的结果。结果是一个列表,包含了按照优先级选择的列值。