Python 如何使用类似行名称上的Pandas来识别模式
我正在导入一个具有类似供应商名称的excel文件,并使用agg函数添加支出,然后使用排序函数对支出进行排序。最终,这个数据帧被输入到一个动态Bokeh图中。 由于文本格式的原因,我的供应商名称存在细微的差异,我的pandas数据框在添加支出时无法识别这种模式。尽管它是同一家供应商,但我并没有得到关于支出的整体看法,只是缺少了一些数据,最终没有在博克图中计算出来 资料 预期结果Python 如何使用类似行名称上的Pandas来识别模式,python,pandas,Python,Pandas,我正在导入一个具有类似供应商名称的excel文件,并使用agg函数添加支出,然后使用排序函数对支出进行排序。最终,这个数据帧被输入到一个动态Bokeh图中。 由于文本格式的原因,我的供应商名称存在细微的差异,我的pandas数据框在添加支出时无法识别这种模式。尽管它是同一家供应商,但我并没有得到关于支出的整体看法,只是缺少了一些数据,最终没有在博克图中计算出来 资料 预期结果 所有数据加起来应该是460。在尝试求和之前,您可以处理标点符号、空格和大写与小写,但这将更改输出中供应商的名称: df.
所有数据加起来应该是460。在尝试求和之前,您可以处理标点符号、空格和大写与小写,但这将更改输出中供应商的名称:
df.groupby([x.upper().replace(' ', '').replace(',','').replace('.','') for x in df['Vendor']])['Spend'].sum()
ABCINC 460
ABCINC 460
您还可以在调用groupby之前就地修改列名:
df['Vendor'] = df['Vendor'].str.upper().str.replace(' ', '').str.replace(',','').str.replace('.','')
print(df.groupby('Vendor')['Spend'].sum())
df现在看起来像:
Vendor Site Spend
0 ABCINC A 300
1 ABCINC B 100
2 ABCINC C 50
3 ABCINC D 10
以及输出:
df.groupby([x.upper().replace(' ', '').replace(',','').replace('.','') for x in df['Vendor']])['Spend'].sum()
ABCINC 460
ABCINC 460
在一天结束的时候,即使上面写着“abc公司”,加上所有必要的数据,这也没关系。我很好。