Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何使用字符串进行分组_Python_Pandas_Dataframe - Fatal编程技术网

Python 如何使用字符串进行分组

Python 如何使用字符串进行分组,python,pandas,dataframe,Python,Pandas,Dataframe,我一直在努力解决一个我以前发布过的问题。现在我有一个df,只要类型和名称匹配,我就想在配对中添加数字。我使用groupby方法取得了一些成功,如下所示: x = df['type'].str[:5] df['Pairing'] = df.groupby([x, 'Name']).ngroup()+1 Name | type | Pairing --------------------------- Charles |Circle | 1 Scott |Sq

我一直在努力解决一个我以前发布过的问题。现在我有一个df,只要
类型
名称
匹配,我就想在
配对中添加数字。我使用groupby方法取得了一些成功,如下所示:

x = df['type'].str[:5]
df['Pairing'] = df.groupby([x, 'Name']).ngroup()+1


Name    | type  |      Pairing 
---------------------------
Charles |Circle       | 1
Scott   |Square       | 2
Scott   |Triangle     | 3
Anne    |Rectangle    | 4
Anne    |Rectangle2   | 4
Anne    |Oval         | 5
Anne    |Oval         | 5
Bart    |Octagon      | 6

我使用
.str[:5]
,因为有时一个数字或符号会附加到一个
类型,而不是另一个。这个方法很有效,但是如果我有一个像
Oval
这样的类型,它就不起作用了,因为它小于5


我不知道如何解决这个问题。如果有人有任何建议,请让我知道!我想知道和
语句是否在这里起作用?

尝试使用
条带消除前导空格:

x = df['type'].str.strip().str[:5]
或者使用
extract
删除所有非字母字符,如下所示:

x = df['type'].str.extract('^[^a-zA-Z]*([a-zA-Z]+)')[0].str[:5]

尝试使用
条带
消除前导空格:

x = df['type'].str.strip().str[:5]
或者使用
extract
删除所有非字母字符,如下所示:

x = df['type'].str.extract('^[^a-zA-Z]*([a-zA-Z]+)')[0].str[:5]

这将删除以下数字:

x = df['type'].str.replace('\d+', '')

这将删除以下数字:

x = df['type'].str.replace('\d+', '')

嗯,我并不特别想删除数字,我希望str小于5的
类型
能够正确分组然后创建一个新列:df['type\u abc']=df['type'].str.replace('\d+,'')嗯,我不特别想删除数字,我希望str小于5的
类型
能够正确分组。然后创建一个新列:df['type\u abc']=df['type'].str.replace('\d+','')哇,我认为这很有效!我需要做更多的检查,但看起来效果不错。非常感谢。我不熟悉编码和python,如果您有时间,我想了解这一行发生了什么
(^[^a-zA-Z]*([a-zA-Z]+)
explain@Rockey试试看。哇,我觉得这很有效!我需要做更多的检查,但看起来效果不错。非常感谢。我不熟悉编码和python,如果您有时间,我想了解这一行发生了什么
(^[^a-zA-Z]*([a-zA-Z]+)
explain@Rockey尝试