Python复制dataframe中的每一行(每一行可根据需要出现的次数指定不同的复制量)

目录

1、数据

2、需求

3、查询

4、实现


1、数据

自己在做项目的时候,有两个Excel表格——一个是对日期去重了的Excel(365行),一个是原始的每天好几条数据的Excel

2、需求

想把前一个Excel按照后一个Excel的天数对应着进行扩充

3、查询

自己搜到了一篇文章,挺有帮助的,不过这篇文章是对每一条数据进行等量的复制。

4、实现

为了将其进行一般性的推广,写了一个计数的函数,总体代码如下。

import pandas as pd
import numpy as np

def countX(lst, x):
    count = 0
    for ele in lst:
        if (ele == x):
            count = count + 1
    return count

# date_1, date_2是2个Excel文件对应的日期列,用pandas读入
cur_dir = '\\'.join(os.path.abspath(inspect.getsourcefile(lambda:0)).split('\\')[:-1])

data_path_1 = os.path.join(cur_dir, 'xxx.xlsx')   # 获取json文件路径
df_1 = pd.read_excel(data_path_1, encoding='gbk')
date_1 = df_1[['日期']].values.tolist()

data_path_2 = os.path.join(cur_dir, 'yyy.xlsx')   # 获取json文件路径
df_2 = pd.read_excel(data_path_2, encoding='gbk')
date_2 = df_2[['日期']].values.tolist()

# 复制

pd2 = pd.DataFrame()
for i in range(len(df_2)):
    count = countX(date_1, date_2[i])
    if count == 0:
        print(i)
        continue
    else:
        a = df_2.loc[i]
        d = pd.DataFrame(a).T
        pd2 = pd2.append([d] * count)


pd2.to_csv('zzz.csv', index=False, encoding='gbk')

关于读取文件地址or获取文件路径,可以参照读取文件地址or路径。

你可能感兴趣的:(Python,python,excel)