我想了一个过程,伪代码如下, 没有测试。
df = pd.read_csv(file_name) # 1000*7
df_new = pd.concat((df, df)) # 将数据扩展为 1000*14
df_new.iloc[7:14,:-1] = df_new.iloc[7:14, 1:] 将右边部分向上移一行
df_new['flag'] = df_new.apply(lambda row: 1 if row[列5] == row[列13] else 0)
df_new['flag'][-1] = 0 # 最后一行不可能为True
if df_new['flag'].sum() > 0: # 有相等情况
def xxx(row):
if not row.flag: # flag为0
将后几列清空
df_new.apply(xxx)
df_new.drop('flag', inplace=True)
return df_new
else:
return df
你可以试试看
【 在 adhere (皮克牛) 的大作中提到: 】
: 我有1张表,大概1000行,循环行x=1:1000实现:
: x=3时:
: 如果第2行第6列的数数值和第3行第7列相等的话,就把这两行合并成一行,第3行完整的拷贝到第二行的末尾,
: ...................