Pandas数据整理实战 - 合并+填充+丢弃缺失
问题
在进行数据处理时,有时会需要将这样的两个表整理成一个表,如下图所示

第一个表中为每日测量值,第二个表中是标准生效日期,第一个表中每日的测量值,是依据当日之前最新的标准进行测量得到的值。按照这个规则可以整理得到第三个表,这个表综合显示每日测量值所依据的标准和标准生效日期。
解决办法
使用pandas , 可以综合运用合并、填充和丢弃缺失等方法,来从表1和表2得到表3。完整的代码如下:
# 创建表1和表2的数据,分别保存在pd.DataFrame中
import pandas as pd
di = pd.date_range('2020-1-1', '2020-1-10', freq = 'D')
l = range(10,101,10)
df1 = pd.DataFrame({'date':di,'measured value':l})
df2 = pd.DataFrame({'effective date': pd.to_datetime(['2019-12-1','2020-1-5','2020-1-8']),'standard':['A','B','C']})
# 将前两个表合并
df3 = pd.merge(df1,df2,how='outer',left_on='date',right_on='effective date',sort=True)

# 填充缺失值
df4 = df3.fillna(method='ffill')

# 丢弃多余的缺失值
dfm = df4.dropna()

经过上述整理,就得到了想要的表。由于上面每一步数据整理都会返回一个新的DataFrame,我们可以将上面的步骤合并为一句(Pandas链式方法 ):
pdm = pd.merge(df1,df2,how='outer',left_on='date',right_on='effective date',sort=True).fillna(method='ffill').dropna()
冀公网安备 13010402001886号