我是 stackoverflow 的新手。
我注意到pandas combine_first()的这种行为,并且只是想了解原因。 当我有以下数据框时,
df = pd.DataFrame({'A':[6,'',7,''], 'B':[1, 3, 5, 3]})
df['A'].combine_first(df['B'])
Out[1]:
0 6
1
2 7
3
Name: A, dtype: object
而使用 np.nan 而不是 ' ' 来启动则给出了 merge_first() 的预期行为
df = pd.DataFrame({'A':[6,np.nan,7,np.nan], 'B':[1, 3, 5, 3]})
df['A'].combine_first(df['B'])
Out[2]:
0 6.0
1 3.0
2 7.0
3 3.0
Name: A, dtype: float64
并且还将“”替换为 np.nan,然后应用 merge_first() 似乎也不起作用。
df = pd.DataFrame({'A':[6,'',7,''], 'B':[1, 3, 5, 3]})
df.replace('', np.nan)
df['A'].combine_first(df['B'])
Out[3]:
0 6
1
2 7
3
Name: A, dtype: object
我想在使用替代方法实现此目的之前了解为什么会发生这种情况。
最佳答案
这对于这里的人来说似乎是非常明显的。但感谢您发表评论!
@W-B 指出我在发布的第三个数据框中犯了错误
df = pd.DataFrame({'A':[6,'',7,''], 'B':[1, 3, 5, 3]})
df = df.replace('', np.nan)
df['A'].combine_first(df['B'])
正如 @ALollz 指出的,df['A'] 具有空字符串 ' ' 不是空值。事后看来,这听起来确实很简单。但我之前想不通!
谢谢!
关于python - 当将同一 DataFrame 中的一列中的值替换到另一列中时,为什么 merge_first() 会显示此行为?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53162682/