【发布时间】:2020-12-05 01:29:51
【问题描述】:
尝试学习 pandas,并将其应用于我正在使用标准 python/php 工具使用各种循环解决的问题。
假设我有两个这样的数据帧,df1 小于 df2,对于 df2 中的 ClientApplication 值,df1 中可能没有相应的子程序
df1
ClientApplication Subprogram
insert_data AA1
remove_data AB1
update_data XX0
df2
Time ClientApplication Duration Result
2020-01-01 insert_data 300 error
2020-02-01 insert_data 100 ok
2020-03-01 update_data 1000 ok
2020-06-02 remove_data 50 error
2020-07-01 check_data 0 ok
我需要完成几件事:
-
在 df2 中为 Subprogram 添加一列,其值对应 到 df1 中的同一个 ClientApplication。当没有一个 在 df1 中找到的对应添加一个任意值('Unknown')
-
使用子程序在 df1 中添加缺少的 ClienApplication 值 值设置为“未知”的任意值
我可以使用 on 条件通过合并获得我想要的,我知道我也可以使用地图来实现这一点,但是我找不到通过添加任意字符串“未知”来管理缺失值的方法除了基于 NaN 值进行其他操作之外,在这种情况下,我看不到在 pandas 中实现这一目标的最紧凑和最有效的方法。
df1 是一个小于 1000 行的小型数据框,而 df2 将是数百万行。
df1 是从 SQL 查询构造的,而 df2 是从 csv 构造的,df1 表将需要更新,因为 csv 包含所有新识别的 Unknown ClientApplication 并且 df2 将被导入带有添加列的 db和更新的值,这与任务无关,但可能会影响选择最有效的方法?
【问题讨论】:
-
如果有任何问题帮助或解决了问题,请考虑accepting it :-)
-
对不起,我一直没有解决这个问题,我在业余时间做。我尝试了一些解决方案,但没有一个完全符合我的要求,但他们指出了实现我需要的正确方法,我会尽快回复大家并发布一个可行的解决方案
标签: python-3.x pandas dataframe dictionary merge