我有一个 pandas 数据框,其中的值有时会变为 NA。我想用与另一列长度相同的字符串列表填充此列:
import pandas as pd
import numpy as np
df = pd.DataFrame({"a": ["one", "two"],
"b": ["three", "four"],
"c": [[1, 2], [3, 4]],
"d": [[5, 6], np.nan]})
a | b | c | d |
---|---|---|---|
一个 | 三 | [1, 2] | [5, 6] |
两个 | 福 | [3, 4] | NaN |
我希望这成为
a | b | c | d |
---|---|---|---|
一个 | 三 | [1, 2] | [5, 6] |
两个 | 福 | [3, 4] | [无值,无值] |
df["d"] = np.where(df.d.isna(),
[np.nan for element in df.c],
df.d) # this doesn't work
我试过了
df["d"] = np.where(df.d.isna(),
['no_value' for element in df.c],
df.d)
和
df["d"] = np.where(df.d.isna(),
['no_value'] * len(df.c),
df.d)
但是两者都不起作用。有人有想法吗?
一个可能的解决方案:
df.assign(d = df['d'].map(lambda x: ['a', 'b'] if x is np.nan else x))