我看到了这个问题的各种版本,但它们似乎都不适合我正在尝试做的事情:这是我的数据:
这是带有 s 的 df NaN
:
df = pd.DataFrame({"A": ["10023", "10040", np.nan, "12345", np.nan, np.nan, "10033", np.nan, np.nan],
"B": [",", "17,-6", "19,-2", "17,-5", "37,-5", ",", "9,-10", "19,-2", "2,-5"],
"C": ["small", "large", "large", "small", "small", "large", "small", "small", "large"]})
A B C
0 10023 , small
1 10040 17,-6 large
2 NaN 19,-2 large
3 12345 17,-5 small
4 NaN 37,-5 small
5 NaN , large
6 10033 9,-10 small
7 NaN 19,-2 small
8 NaN 2,-5 large
接下来我有一个名为 df 的查找df2
:
df2 = pd.DataFrame({"B": ['17,-5', '19,-2', '37,-5', '9,-10'],
"A": ["10040", "54321", "12345", "10033"]})
B A
0 17,-5 10040
1 19,-2 54321
2 37,-5 12345
3 9,-10 10033
我想通过查找列并返回来填充列的NaN
s,以使结果如下所示:A
df
df2.B
df2.A
dfr
A B C
0 10023 , small
1 10040 17,-6 large
2 54321 19,-2 large
3 10040 17,-5 small
4 12345 37,-5 small
5 NaN , large
6 10033 9,-10 small
7 54321 19,-2 small
8 NaN 2,-5 large
重要警告:
df
s 没有匹配的索引df.A
和的内容df2.A
是非唯一的()- do的行
df2
组成了唯一的对。 - 假设有更多列,未显示,
NaN
s。
df
使用 pandas,可以通过以下方式找到(我认为)感兴趣的行: df.loc[df['A'].isnull(),]
。 这个答案似乎很有希望,但我不清楚df1
该示例的来源。我的实际数据集比这大得多,我将不得不以这种方式替换几列。