Python pandas-将一列复制到另一列而不进行有效覆盖

Python pandas-将一列复制到另一列而不进行有效覆盖,python,pandas,Python,Pandas,我有A列和B列,其中A列很少有数据,B列完全满了。我想将B列复制到A列,并始终保留A列在B列上的任何值 我的数据帧的长度大约为150万,因此df.iterrows()是一个解决方案,但是它会非常耗时。是否有任何优化的熊猫功能或技巧可以尽可能有效地执行此操作?您可以尝试以下方法 df["A"][df["A"].isna()] = df["B"][df["A"].isna()] 编辑:评论员指出,pandas中已经有了一种解决这个问题的方法,所以请改用它。我会使用.loc来完成这项工作 df.lo

我有A列和B列,其中A列很少有数据,B列完全满了。我想将B列复制到A列,并始终保留A列在B列上的任何值


我的数据帧的长度大约为150万,因此df.iterrows()是一个解决方案,但是它会非常耗时。是否有任何优化的熊猫功能或技巧可以尽可能有效地执行此操作?

您可以尝试以下方法

df["A"][df["A"].isna()] = df["B"][df["A"].isna()]

编辑:评论员指出,pandas中已经有了一种解决这个问题的方法,所以请改用它。

我会使用.loc来完成这项工作

df.loc[df['A'].isnull(), 'A'] = df['B']

这是这样的:位于列“A”为空的位置,并将列“A”设置为列“B”。

df.A=df.A.fillna(df.B)我可以运行一个快速性能比较,但在您的脑海中,您会知道哪一个更快吗?
iterrows
绝对会更慢。熊猫的全部目的是将这样的操作并行化;否则你可以只使用一个dict值,我的意思是在fillna()和loc()之间,除非它们使用相同的过程?我不熟悉熊猫的内部运作。我不知道性能如何,但是
df['A']=df['A']。fillna(df['B'])
肯定更惯用,几乎肯定会有相当的性能。