首页 > 解决方案 > 从 DataFrame 中拆分行值和计数唯一值

问题描述

我在标题为Reference的列中有以下数据:

ABS052
ABS052/01
ABS052/02
ADA010/00
ADD005
ADD005/01
ADD005/02
ADD005/03
ADD005/04
ADD005/05
...
WOO032
WOO032/01
WOO032/02
WOO032/03
WOO045
WOO045/01
WOO045/02
WOO045/03
WOO045/04

我想知道如何拆分行值以创建一个包含单个参考代码的 Dataframe,加上一个 Count 值,例如:

参考 数数
ABS052 3
ADA010 0
添加005 2
... ...
WOO032 3
WOO045 4

我有以下代码: df['Reference'] = df['Reference'].str.split('/')

结果是:

['ABS052'],
['ABS052','01'],
['ABS052','02'],
['ABS052','03'],
...

但我不确定如何从每行列表中删除最后两位数字。

我现在想要的只是将字符串保留在每一行[0]中,如果有意义的话,那么我可以value_count'Reference'列中检索 a 。

标签: pythonpandassortingdata-wrangling

解决方案


您可以使用正则表达式替换最后两位数字,如下所示:

df = pd.DataFrame({'a':['ABS052','ABS052/01','ABS052/02','ADA010/00','ADD005','ADD005/01','ADD005/02','ADD005/03','ADD005/04','ADD005/05']})
df = df['a'].str.replace(r'\/\d+$', '').value_counts().reset_index()

输出:

>>>>    index   a
    0   ADD005  6
    1   ABS052  3
    2   ADA010  1

推荐阅读