import pandas as pd
import glob
_path = 'B:\\Excel Files\\'
_file_list = glob.glob(_path + '*.xlsx')
concat_frame = []
for _file in _file_list:
if '~$' in _file:
print 'Temp file -> ', _file, ' ignored.'
else:
print 'Loading ' , _file
xl = pd.ExcelFile(_file)
sheet_name_suffix = 'Sheet1'
sheet_name = [s for s in xl.sheet_names if sheet_name_suffix in s][0]
xl = xl.parse(sheet_name)
keep_cols = ['CustID','DATE','Start_Time','CARD_NAME','Amount']
xl = xl[keep_cols]
concat_frame.append(xl)
master_frame = pd.concat(concat_frame, ignore_index=True)
analysis_groups = master_frame.groupby(by=['CustID','DATE','Start_Time'] & ['CARD_NAME']=='Visa')
analysis_sums = analysis_groups['Amount'].sum()
analysis_sums.reset_index().to_csv('B:\\Excel Files\\ Customerdata.csv', index=False)
我在使用此代码时遇到了麻烦,但是它可以与analysis_groups = master_frame.groupby(by=['CustID','DATE','Start_Time','CARD_NAME']
一起使用,但是当我尝试过滤Visa,American Express等信用卡类型时,它不起作用。请帮忙,我在做什么错了?
答案 0 :(得分:0)
如果我理解您的问题是对的,则您正在尝试基于特定的CARD_NAME
过滤数据集中的行。
但是groupby是仅根据列对数据进行分组的功能。从groupby输出中,只需选择所需的特定卡名即可进行过滤。