如何使用python基于子字符串将数据从一张纸导入另一张纸

时间:2018-09-05 09:47:05

标签: python excel pandas

我的目标是基于子字符串导入在sheet1中存储为DataFrame df1的数据。

我的DataFrame如下所示:

df:[2 x 8]

    ordercode           quantity
PMC11-AA1L1FAVWJA        20
PMC21-AA1A1CBVXJA        10
PMP11-AA1L1FAWJJ          5
PMP21-AA1A1FBWJJ          3
PMP23-AA1A1FA3EJ+JA       1
PTP31B-AA3D1HGBVXJ        1
PTC31B-AA3D1CGBWBJA       2
PTP33B-AA3D1HGB1JJ        10

但是我想要的结果应该是

Sheet2_df2:"1C"
   ordercode           quantity
PMC21-AA1A1CBVXJA        10
PTC31B-AA3D1CGBWBJA       2

Sheet3_df3:"1F"
PMP11-AA1L1FAWJJ          5
PMP21-AA1A1FBWJJ          3
PMC11-AA1L1FAVWJA        20

在excel中,创建条件并使用IF函数很容易。     B1:“ 1C”

 =IF(Sheet1!A2=$B$1,Sheet1!A2,"")

,并且可以复制到所有单元格。

我不知道如何在python中执行此操作。 任何解决方案将不胜感激。

1 个答案:

答案 0 :(得分:1)

首先将数据读入Pandas数据框:

df = pd.read_excel('file.xlsx')

然后对pd.Series.str.contains使用字典理解:

substrings = ['1C', '1F']

d = {x: df[df['ordercode'].str.contains(x, na=False, regex=False)] for x in substrings]

然后您可以通过子字符串键访问数据帧,例如d['1C']。如果需要,可以将字典中的每个值导出到单独的工作表或工作簿中。例如:

for k, v in d.items():
    v.to_excel(f'{k}.xlsx', index=False)