python - 如何在转移后留下 NaN

标签 python pandas

如果该列 (Col_6) 为空,我有一个函数可以将一列 (Col_5) 的值移至另一列 (Col_6),如下所示:

def shift(row):
    return row['Col_6'] if not pd.isnull(row['Col_6']) else row['Col_5']

然后我将此函数应用到我的列,如下所示:

df[['Col_6', 'Col_5']].apply(shift, axis=1)

这工作正常,但我不需要将原始值保留在 Col_5 中,而是需要将其转移到 Col_6 并在其位置上保留 np.nan (这样我就可以将相同的函数应用于前面的专栏。)有什么想法吗?

最佳答案

fillna + mask :向量化,而不是逐行

对于 Pandas,您应该尝试通过 apply避免按行操作,因为这些操作是通过 Python 级循环进行处理的。在这种情况下,您可以使用:

null_mask = df['Col_6'].isnull()
df['Col_6'] = df['Col_6'].fillna(df['Col_5'])
df['Col_5'] = df['Col_5'].mask(null_mask)

请注意,我们首先计算并存储一个表示 Col_6 为 null 的 bool 序列,然后使用它来使这些值在通过 移动的情况下为 null >fillna.

关于python - 如何在转移后留下 NaN,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53346198/

相关文章:

python + Pandas : Update ONE column in csv based on another csv

python - Keras 进度条不适用于 Windows 10

python - 在日期列表中查找重复项

python - 覆盖变量时 Python 中的内存位置会发生什么变化?

python - 根据条件计算组内共享元素的数量

python - 如何向 pandas 数据框添加条件行

python - Ubuntu 10.4 中 Vim 的 Pydiction 和 Python 的问题

来自字符串的 Python 动态函数

python - 如何用 Pandas 创建高低开收盘图表

Python Pandas : applying a specific function to each row