用修改后的 .copy() 行替换原始 DataFrame 的行:将 .copy() 结果与原始 DataFrame 合并

Posted

技术标签:

【中文标题】用修改后的 .copy() 行替换原始 DataFrame 的行:将 .copy() 结果与原始 DataFrame 合并【英文标题】:Replacing rows of original DataFrame with modified .copy() rows: Merging .copy() results with Original DataFrame 【发布时间】:2019-11-21 10:07:15 【问题描述】:

我使用 .copy()(命名为“df_copy”)提取了一个大型 DataFrame(称为“df”)的一部分,并应用了某些函数来创建一个新列“Category”。

不过,我还给了“df”一个名为“Category”的列,并为该列分配了一些其他值。 “df_copy”中的所有其他值/列与“df”中它们各自的值/列相同:唯一的区别是“类别”列。

为了理解,

原始数据帧:

df 是 100 行 3 列。 df_copy 是 df 的 5 行,具有相同的列。

处理后:

df 是 100 行,4 列(新列是“类别”),其中 5 行的“类别”列具有“NaN” df_copy 是 5 行 4 列,新列是 'Category',它的值不在 df 中。

基本上,我想用来自 df_copy 的当前后处理行替换我从 df 获取的行(原始 df_copy DataFrame 中的行)。

我尝试过不同形式的合并:

左合并,不指定“on”:最初复制到 df_copy 中的行的 Category 列的结果为“NA” 右合并,不指定'on':和df_copy一样 左合并,在 df 和 df_copy 之间没有变化的一列上(例如,“Number”):每一列都是重复的:“Number_x”、“Number_y”、“Category_x”、“Category_y”。

【问题讨论】:

【参考方案1】:

您是否尝试过使用 df.where()?

df = df.where(df['Category'].isna(), df_copy)

【讨论】:

这将 df 更改为仅在 df_copy 中的行中具有值-其他行对于每列都是 N/A 不得不进一步研究 df.where(),但这是正确的答案。如果 df['Category'].isna() 为 True,则保留原始值。如果为 false,则替换为 df_copy。

以上是关于用修改后的 .copy() 行替换原始 DataFrame 的行:将 .copy() 结果与原始 DataFrame 合并的主要内容,如果未能解决你的问题,请参考以下文章

将修改后的子帧嵌入到原始子帧中

JAVA中写时复制(Copy-On-Write)Map实现

用Java中的编辑数组替换原始数组

用字符串替换特性键中的值

如何使用IDEA编译java文件

使用修改后的 Vigenere 密码算法,解密不会导致原始输入 [关闭]