python - 同时在 Pandas 数据框中进行多个操作

标签 python python-3.x pandas dataframe

我有一个主数据框 D1:

PRCESS_NO   VALUE   COUNT   TIME
18          25855   69      13:41:56
19          10254   8       13:42:14
20          10254   4       13:42:20
21          68522   18      13:42:29
22          68522   75      13:42:33
23          25855   21      13:42:37
24          10254   658     13:42:53
25          10254   84      13:42:59

D2 数据框:

PRCESS_NO   VALUE   COUNT   TIME
21          68522   12      14:32:25
22          68522   10      14:42:39
23          25855   54      14:38:25

我想根据下面提到的条件使用 D2 数据帧中的值更新主数据帧 D1:

  1. 添加 VALUE 和 COUNT 列的值(D1.VALUE + D2.VALUE、D1.COUNT + D2.COUNT)
  2. 使用 D2 TIME 列中的值更新 D1 TIME 列。

最终 D1 数据框:

PRCESS_NO   VALUE   COUNT   TIME
18          25855   69      13:41:56
19          10254   8       13:42:14
20          10254   4       13:42:20
21          68522   30      14:32:25
22          68522   85      14:42:39
23          25855   75      14:38:25
24          10254   658     13:42:53
25          10254   84      13:42:59

最佳答案

使用DataFrame.addcombine_first :

cols = ['VALUE','COUNT']
D1 = D1.set_index('PRCESS_NO')
D2 = D2.set_index('PRCESS_NO')

D1[cols] = D1[cols].add(D2[cols], fill_value=0).astype(int)
D1['TIME'] = D2['TIME'].combine_first(D1['TIME'])
D1 = D1.reset_index()
print (D1)
   PRCESS_NO   VALUE  COUNT      TIME
0         18   25855     69  13:41:56
1         19   10254      8  13:42:14
2         20   10254      4  13:42:20
3         21  137044     30  14:32:25
4         22  137044     85  14:42:39
5         23   51710     75  14:38:25
6         24   10254    658  13:42:53
7         25   10254     84  13:42:59

或者concat与骨料 agg 总和最后:

D1 = (pd.concat([D1,D2])
        .groupby('PRCESS_NO', as_index=False)
        .agg({'VALUE':'sum', 'COUNT':'sum', 'TIME':'last'}))
print (D1)
   PRCESS_NO   VALUE  COUNT      TIME
0         18   25855     69  13:41:56
1         19   10254      8  13:42:14
2         20   10254      4  13:42:20
3         21  137044     30  14:32:25
4         22  137044     85  14:42:39
5         23   51710     75  14:38:25
6         24   10254    658  13:42:53
7         25   10254     84  13:42:59

关于python - 同时在 Pandas 数据框中进行多个操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52109361/

相关文章:

python - 如何在需要时启用滚动功能?

python - 如果数据框列中的空值已存在于另一行中,则用相同的值填充该空值

python - 将上下文管理器的动态可迭代链接到单个 with 语句

python - 使用 Python 3 将一个文件的内容复制到另一个文件中

python - 附加到上一行

python - 来自字典列表的字典的数据框?

python - 如何计算 pandas 系列列表中每个元素的出现次数?

python - 如何创建一个日志文件来记录 python 中的每个步骤?

python pandas : assign control vs. 根据 % 随机处理分组

python - 将 partial 与条件默认参数一起使用