【问题标题】:How to import dats from one sheet to another sheet based on Substring using python如何使用python基于Substring将数据从一张表导入另一张表
【发布时间】:2018-09-05 19:14:31
【问题描述】:

我这里的目标是根据子字符串在 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 中执行此操作。 任何解决方案将不胜感激。

【问题讨论】:

    标签: python excel pandas


    【解决方案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)
    

    【讨论】:

    • 谢谢,你能解释一下这个 For 函数是如何工作的吗?我是否可以导出每个子字符串的两列?这个“k”在这里是如何工作的?
    • both the columns 不确定您的意思。这是一个简单的for 循环,它从字典中迭代键和值。每个键都是一个子字符串,例如'1C',每个值都是一个数据框,例如在df['ordercode'] 中为'1C' 过滤的数据框。
    • 好的。我明白了。谢谢让我试试这个。
    • 嘿。有效。但我需要不同工作表中相同 Excel 文件中的数据。我该怎么做??
    猜你喜欢
    • 2013-09-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-23
    • 2023-03-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多