问题描述:2018年ID有3万多个,每个ID都有其对应的目标变量(以下简称V)数据;2019年ID有4万多个(与2018年的ID有相同,但不包含所有的2018年的ID),其中2019年的V部分数据缺失,缺失的部分需要根据2018年的V进行补充.
需要解决的问题:在2018年的ID中选出与2019年ID相同的ID,并依据选出的相同的ID对应的V数据填充至2019年的V数据中.
不知道如何解决,在线求教……
问题描述:2018年ID有3万多个,每个ID都有其对应的目标变量(以下简称V)数据;2019年ID有4万多个(与2018年的ID有相同,但不包含所有的2018年的ID),其中2019年的V部分数据缺失,缺失的部分需要根据2018年的V进行补充.
需要解决的问题:在2018年的ID中选出与2019年ID相同的ID,并依据选出的相同的ID对应的V数据填充至2019年的V数据中.
不知道如何解决,在线求教……
import pandas as pd
# 这是你的文件路径,默认你的文件为excel.xlsx
excel_file = 'D:/pythonProject/ID.xlsx'
# 读取文件数据为df结构(DataFrame结构),读取的sheet名字为“ID”, 先后按['2018年ID', '2019年ID']的顺序进行升序排序
df = pd.read_excel(excel_file, sheet_name = 'ID').sort_values(by = ['2018年ID', '2019年ID'], ascending=[True, True])
index = 0 # 开始检索2018年ID的位置为0(即2018年的第一个ID)
for row_c in range(0, df.shape[0]): # 遍历2019年信息的每一行
for row_a in range(index, df.shape[0]): # 遍历2018年信息的每一行,如果同一列数据存在重复情况,此行改为for row_a in range(0, df.shape[0]):
if df.iloc[row_c, 2] == df.iloc[row_a, 0]: # 如果2019年ID等于2018年ID,按你的图片来,位置分别在第三列和第一列,对应索引2和0
df.iloc[row_c, 3] = df.iloc[row_a, 1] # 更改2019年变量,按你的图片来,位置分别在第四列和第二列,对应索引3和1
index = row_a + 1 # 这样可以加快匹配速度,已经好了的就不匹配了,但是前提是你的同一列ID没有重复的数据
save_way = 'D:/pythonProject/result.xlsx' # 结果文件的保存路径
df.to_excel(save_way, sheet_name = 'ID', index=False) # 生成结果文件