Pandas式Excel-Fi

2024-06-02 00:21:25 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个在excel文件上运行的示例脚本。实际上,第6行之后,我想过滤掉F列中包含BFD和SFD的行(我知道在上面的代码中刚刚分配了这些值,而且在脚本之前的不同行中也存在更多这些值)。过滤后,只需将第7-8行中的逻辑应用于数据帧。所以本质上,你用pandas按列中的单元格值过滤出行,然后对没有被过滤掉的内容应用逻辑,然后对所有内容进行未过滤(就像你要在excel中清除过滤器一样),让我的数据框准备就绪

import pandas as pd
import numpy as np
data = pd.read_excel("2.27.xlsm", encoding = "ISO-8859-1", dtype=object)
data.loc[data.F == 'DBD', 'F'] = 'BFD'
data.loc[data.F == 'DUB', 'F'] = 'BFD'
data.loc[data.F == 'DCD', 'F'] = 'SFD'
#Now I want to apply this logic and filter out any rows that have values of BFD or SF in column F and then apply to logic below (to not overwrite any work done above)
data.loc[data.Fm == 'B25', 'F'] = 'BFD'
data.loc[data.Fm == 'B50', 'F'] = 'BFD'

writer = pd.ExcelWriter('output.xlsx', engine='xlsxwriter')
data.to_excel(writer, sheet_name='Sheet1')
writer.save()

Tags: to数据import脚本内容pandasdataas
3条回答

未经测试,因为没有给出任何数据,但这应该能为您带来好处:

filtered = [d for d in data if d['F'] == 'BFD' or d['F'] == 'SF'] 
# now proceed with your work

再次感谢所有的帮助,这就是我最终要做的。请戳洞,如果你认为这不等于一个excel过滤器的项目,首先是取消调整,然后清除过滤器。在

ta =  data[~data.Format.str.contains(r'UN', case = False, na=False, regex = False)] # trying regex
da = data[data.Format.str.contains(r'UN', case = False, na=False, regex = False)] # trying regex


final = pd.concat([ta, da],0) # now append seperate dataframes 

这将把你的数据帧转换成一个只包含列F有BDF或SDF的行的数据帧

data = data[data.F.str.contains(r'^BFD$|^SFD$', case = False, na=False)]

相关问题 更多 >