首页 > 解决方案 > 如何有条件地填写“nan”值?

问题描述

我想用这样的填充缺失值:

data = pd.read_csv("E:\\SPEED.csv")

数据 - 数据

Case - 1
if flcass= "motorway", "motorway_link", "trunk" or "trunk_link"

我想用 110 替换文本“nan”

Case - 2
if flcass= "primary", "primary_link", "secondary" or "secondary_link"

我想用 70 替换文本“nan”

Case - 3

如果“fclass”是另一个值,我想将其更改为 40。

如果有任何帮助,我将不胜感激。

标签: python

解决方案


用下面的例子:

data = pandas.DataFrame({
  'flclass': ['a', 'b', 'c', 'a'], 
  'AGU': [float('nan'), float('nan'), float('nan'), 9]
})

您可以使用numpy 条件迭代从数据中的第 2 个 ( [1:]) - 5 个 ( )开始的列来更新它[4:]

for column in data.columns[1:]:
     data[column] = np.where((data['flclass'] == 'b') & (data[column].isna()), 110, data[column])

panadas 适用

import numpy as np

data['AGU'] = data.apply(
     lambda row: 110 if np.isnan(row['AGU']) and row['flclass'] in ("b","a") else row['AGU'],
     axis=1,
)

你可以("b","a")用例如替换的地方("motorway", "motorway_link", "trunk", "trunk_link")


推荐阅读