大熊猫:根据布尔值列表/字典替换数据框列

tmwilson26

我有两个熊猫数据框,我想将它们合并在一起,但是不像在示例中看到的那样。我有一组“旧”数据和一组“新”数据,它们对于两个形状相同且具有相同列名的数据框。我进行了一些分析,确定需要创建第三个数据集,其中一些来自“旧”数据列,一些来自“新”数据列。例如,假设我有以下两个数据集:

df_old = pd.DataFrame(np.zeros([5,5]),columns=list('ABCDE'))
df_new = pd.DataFrame(np.ones([5,5]),columns=list('ABCDE'))

简单来说就是:

     A    B    C    D    E
0  0.0  0.0  0.0  0.0  0.0
1  0.0  0.0  0.0  0.0  0.0
2  0.0  0.0  0.0  0.0  0.0
3  0.0  0.0  0.0  0.0  0.0
4  0.0  0.0  0.0  0.0  0.0

     A    B    C    D    E
0  1.0  1.0  1.0  1.0  1.0
1  1.0  1.0  1.0  1.0  1.0
2  1.0  1.0  1.0  1.0  1.0
3  1.0  1.0  1.0  1.0  1.0
4  1.0  1.0  1.0  1.0  1.0

我进行了一些分析,发现我想替换列BD我可以像这样循环执行:

replace = dict(A=False,B=True,C=False,D=True,E=False)
df = pd.DataFrame({})
for k,v in sorted(replace.items()):
    df[k] = df_new[k] if v else df_old[k]

这给了我我想要的数据:

     A    B    C    D    E
0  0.0  1.0  0.0  1.0  0.0
1  0.0  1.0  0.0  1.0  0.0
2  0.0  1.0  0.0  1.0  0.0
3  0.0  1.0  0.0  1.0  0.0
4  0.0  1.0  0.0  1.0  0.0

但是,老实说,这似乎有些笨拙,而且我想有一种更好的方法可以使用熊猫来做到这一点。另外,我想保留列的顺序,而不是像本示例数据集那样按字母顺序排列,因此对字典进行排序可能不是走的路,尽管我可以从数据集中提取列名称,如果需要。

是否有更好的方法使用某些Pandas合并功能来做到这一点?

米拉杜洛

一个真正的基本方法就是过滤布尔值字典,然后直接分配。

to_rep = [k for k in replace if replace[k]]
df_old[to_rep] = df_new[to_rep]

如果您想保留旧的DataFrame,则可以使用 assign()

df_old.assign(**{k: df_new[k] for k in replace if replace[k]})

正如尼克(Nickil)提到的那样,assign()显然在我们传递命令时并没有保留论据顺序。但是,可以预见,它将按字母顺序将分配的列插入DataFrame的末尾。

演示版

>>> df_old.assign(**{k: df_new[k] for k in replace if replace[k]})

     A    B    C    D    E
0  0.0  1.0  0.0  1.0  0.0
1  0.0  1.0  0.0  1.0  0.0
2  0.0  1.0  0.0  1.0  0.0
3  0.0  1.0  0.0  1.0  0.0
4  0.0  1.0  0.0  1.0  0.0

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

替换大熊猫数据框中的列值

来自分类Dev

大熊猫:从列列表中替换值列表

来自分类Dev

大熊猫:合并数据框并替换值

来自分类Dev

如何根据熊猫的布尔值压缩熊猫数据框?

来自分类Dev

大熊猫:是否可以使用任意长的布尔值准则过滤数据帧?

来自分类Dev

大熊猫,如何按列值过滤数据框

来自分类Dev

大熊猫-根据多行中的值将汇总列数据的行添加到数据框中

来自分类Dev

熊猫数据框到列表字典

来自分类Dev

从列表字典制作熊猫数据框

来自分类Dev

如何根据给定的字典制作大熊猫数据框簇?

来自分类Dev

大熊猫数据框中的布尔索引

来自分类Dev

大熊猫:根据其他数据框创建数据框列

来自分类Dev

大熊猫:根据另一列的匹配替换列值

来自分类Dev

大熊猫:根据一列中的相似值,使用多个数据框中的值填充数据框中的空列

来自分类常见问题

大熊猫数据框到一些列的字典

来自分类Dev

大熊猫数据框到一些列的字典

来自分类Dev

从字典中大熊猫数据帧列表获取值

来自分类Dev

使用多列在大熊猫中转换大熊猫数据框

来自分类Dev

大熊猫,根据列中的层次结构值附加数据

来自分类Dev

在大熊猫值过滤数据框保留为NaN

来自分类Dev

大熊猫将字符串列转换为布尔值

来自分类Dev

大熊猫数据框,按列比较2组的字符串值

来自分类Dev

大熊猫:从现有的列值创建一个新的数据框

来自分类Dev

如何自动命名大熊猫数据框列?

来自分类Dev

大熊猫数据框中仅某些列的总和

来自分类Dev

大熊猫替换行值

来自分类常见问题

分割大熊猫数据框

来自分类Dev

计算大熊猫数据框的元组

来自分类Dev

大熊猫数据框并行处理

Related 相关文章

热门标签

归档