【问题标题】:Python panda filtering onPython panda 过滤
【发布时间】:2019-04-05 13:40:03
【问题描述】:

我正在尝试过滤文件,以便保留“单元格名称”为 LM-MP-NW-URBAN-GROCERY S & SPAZA 的数据行,但是当我运行上述代码时,我得到了

"SyntaxError: 无效语法"

我使用带有数字的列尝试了该代码,它与 ==<, > 符号一起使用。

另外,请帮助我了解如何过滤多个项目 - 例如在上面的代码中,我想保留所有单元格名称为 LM-MP-NW-URBAN-GROCERY S & SPAZAKZN-GP-EC-URBAN_GROCERY S & SPAZA 的数据

提前谢谢你

#Import libraries 
import pandas as pd
import os
import glob
#Set working directory and create list of raw files 
os.chdir(r'C:\Users\Shab7002\Documents\data science\18 10 9\nestle 708294\infant')
lorf = glob.glob('*.txt')
#Create empty dataframe and concatenate raw files 
df_mrgd = pd.DataFrame()

for file in lorf:
    df_add = pd.read_csv(file,sep='\t', encoding='latin-1')
    df_mrgd = pd.concat([df_mrgd, df_add.head(10)])
    #Filter columns
filt_col = ['PeriodVFP', 'Product name', 'MBD Name', 'Outlet name', 'Cell Name', 'Sales', 'SalesValue', 'SalesVolume']
#filter rows
df_filtered = df_mrgd[filt_col].query('Cell Name== "LM-MP-NW-URBAN-GROCERY S & SPAZA"')
 #and export concatenated data frame 
df_filtered.to_excel('mu.xlsx') 

【问题讨论】:

  • 请为您的错误提供完整的追溯,而不仅仅是错误描述。

标签: python pandas filtering


【解决方案1】:

这是在 Pandas 中根据多个 Cell Name 值过滤行的方式:

df_filtered = df_mrgd.loc[df_mrgd['Cell Name'].isin(["LM-MP-NW-URBAN-GROCERY S & SPAZA", "KZN-GP-EC-URBAN_GROCERY S & SPAZA"]), filt_col]

【讨论】:

  • 非常感谢 - 我已将我编译的所有过滤器代码放入以便其他人可以参考它们 - 请确认 cmets 是否准确 #filter 适用于数字但不适用于字符 df_filtered = df_mrgd[filt_col ].query('PeriodVFP
  • 不,这不正确。您的最后两个 cmets 对字符和数字都有效。我从不使用query(),所以我无法评论如何使其与字符列一起使用。
  • 如何使用字符的最后一条评论?
  • 与数值变量一样,但将值放在引号中。例如:df_filtered = df_mrgd[df_mrgd['Cell Name'] == 'GA-URBAN-GROCERY']
猜你喜欢
  • 2021-02-05
  • 2023-02-01
  • 2014-10-03
  • 2014-09-06
  • 2018-11-15
  • 2022-01-04
  • 1970-01-01
  • 1970-01-01
  • 2021-08-08
相关资源
最近更新 更多