pandas 获取增量数据

场景: 每次从日志中拿到全量数据,然后存放到数据库中,那么如何得到上一次与这一次的增量数据呢?
比如上一次数据是

df2 = DataFrame([['a', '男', 10],
['b', '男', 11],
['c', '女', 11]],
columns=['name', 'sex', 'age'])
这一次数据是
df1 = DataFrame([['a', '男', 20],

['b', '男', 15],
                 ['c', '女', 14],
['a', '女', 10],
['c', '男', 11]],
columns=['name', 'sex', 'money'])

想得到df4:

name sex age

0 a 女 10.0
1 a 男 10.0
2 b 男 4.0
3 c 女 3.0
4 c 男 11.0

 

  主要用到combine_first函数

__version__ = '1.0.0.0'
"""
@brief : 简介
@details: 详细信息
@author : zhphuang
@date : 2018-10-29
"""
import pandas as pd
import random
from pandas import *
df1 = DataFrame([['a', '男', 20],
['b', '男', 15],
['c', '女', 14],
['a', '女', 10],
['c', '男', 11]],
columns=['name', 'sex', 'age'])

df2 = DataFrame([['a', '男', 10],
['b', '男', 11],
['c', '女', 11]],
columns=['name', 'sex', 'age'])

df1.set_index(['name', 'sex'], inplace=True)
print("df1:\n%s\n\n" % df1)
df2.set_index(['name', 'sex'], inplace=True)
print("df2:\n%s\n\n" % df2)
df4 = df1 - df2
# df3.reset_index(['name', 'sex'], inplace=True)
# df4.reset_index(['name', 'sex'], inplace=True)
print("df4:\n%s\n\n" % df4)

df4 = df4.combine_first(df1)
df4.reset_index(['name', 'sex'], inplace=True)
print("df4:\n%s\n\n" % df4)
posted @ 2019-07-30 17:55  牛牛码代码  阅读(729)  评论(0编辑  收藏  举报