Предполагая, что значения col2
являются списком, например:
col1 col2 col3
0 1 [1] 0.1
1 2 [2, 4] 0.2
2 3 [3, 5] 0.3
3 4 [4, 6] 0.2
4 5 NaN NaN
5 6 NaN NaN
Вы можете сделать следующее:
# create lookup dictionary to replace for nan
pairs = df[['col2', 'col3']].explode('col2').dropna()
lookup = {int(key): value for key, value in pairs.itertuples(index=False, name=None)}
# replace the value only where isna
df['col3'] = np.where(df.col3.isna(), df.col1.map(lookup.get), df.col3)
print(df)
Вывод
col1 col2 col3
0 1 [1] 0.1
1 2 [2, 4] 0.2
2 3 [3, 5] 0.3
3 4 [4, 6] 0.2
4 5 NaN 0.3
5 6 NaN 0.2
Обратите внимание, что вы должны импортировать numpy, чтобы это решение работало. Если col2
является строкой, вы можете попробовать:
df['col2'] = df.col2.str.split(",")