pandas python中的Vlookup并计算差值

pgvzfuti  于 2023-05-08  发布在  Python
关注(0)|答案(1)|浏览(87)

我有许多csv文件在一个文件夹,我正在寻找一个vlookup类的东西。就像在一个文件中获取另一个文件的值,然后计算差值。
就像我有很多csv文件后面跟着日期(_183kOutput_data_2023-04- 18.csv,_183kOutput_data_2023 -03- 29.csv,_183kOutput_data_2023 -03-14.csv等)。
该等构筑物为─
_183kOutput_data_2023-04-18.csv
| 卖家|沃勒|
| --------------|--------------|
| 哈日|二|
| 奥姆|十二岁|
| 猫|十三|
| 垫|十四岁|
| 约翰|十五岁|
_183kOutput_data_2023-03-29.csv
| 卖家|沃勒|
| --------------|--------------|
| 哈日|1|
| 奥姆|十一|
| 猫|十二岁|
| 垫|10个|
| 约翰|九|
我的要求是取两个CSV文件,其日期更近,其中一个的值在另一个中,并计算差异。
就像-
| 卖家|© 2018 - 2019 www.cnjs.com版权所有|© 2018 - 2019 www.cnjs.com版权所有|迪费尔内塞|
| --------------|--------------|--------------|--------------|
| 哈日|二|1| 1|
| 奥姆|十二岁|十一|二|
| 猫|十三|十二岁|二|
| 垫|十四岁|10个|四个|
| 约翰|十五岁|九|六|
并对文件夹中的所有文件重复此操作。就像我已经取了2023-04-18.csv和2023-03-29.csv一样,接下来我们将取2023-03-29.csv和2023-03-14.csv等等。

4jb9z9bj

4jb9z9bj1#

您可以用途:

import glob, os

#get files in list
files = glob.glob('files/*.csv')
    
#extract dates to dictionary
names = {os.path.basename(f)[-14:-4]:f for f in files}
print (names)

#sorting by dates
cols = sorted(names.keys(), reverse=True)

#read files to DataFrames and join, last append difference column
for a, b in zip(cols, cols[1:]):
    df1 = pd.read_csv(names[a],index_col=['Seller'])['Value']
    df2 = pd.read_csv(names[b],index_col=['Seller'])['Value']
    df = pd.concat([df1, df2], axis=1, keys=(a,b))

    df['Difference'] = df.iloc[:, 0].sub(df.iloc[:, 1])
    print(df)

相关问题