python - 当将同一 DataFrame 中的一列中的值替换到另一列中时,为什么 merge_first() 会显示此行为?

标签 python python-2.7 pandas dataframe

我是 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/

相关文章:

python - 获取 3 个列表之间的差异

python - 如何合并多个数据框

python - 在 python 中组合列表

python - 如何在不耗尽内存的情况下从 sql 查询创建 Pandas 数据框?

python - 如何在 PyCharm 中使用 Docker 和 Conda

python - 在 Azure 容器实例中部署机器学习模型时如何访问所有已注册的模型?

python - 装饰器和全局变量

linux - Paramiko 运行脚本并退出

python - 尝试使用 groupby 获取最常见的值并得到 IndexError

Python:如何在另一个数据框中查找值?