Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/15.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 3.x 在panda列中的逗号分隔字符串中查找重复的单词,并为其添加各种前缀_Python 3.x_Pandas_Duplicates - Fatal编程技术网

Python 3.x 在panda列中的逗号分隔字符串中查找重复的单词,并为其添加各种前缀

Python 3.x 在panda列中的逗号分隔字符串中查找重复的单词,并为其添加各种前缀,python-3.x,pandas,duplicates,Python 3.x,Pandas,Duplicates,我有一个dataframe列,看起来像下面这样,但更大: df= pd.DataFrame(["Mina,is,good", "Dania,is,good,good", "Alice,is,good,good,good"] columns=['a']) 我希望输出看起来像: df_output= pd.DataFrame(["Mina,is,good", "Dania,is,A-good,Y-good", "Alice,is,A-good,Y-good,Z

我有一个dataframe列,看起来像下面这样,但更大:

df=  pd.DataFrame(["Mina,is,good", "Dania,is,good,good", "Alice,is,good,good,good"]
                 columns=['a'])
我希望输出看起来像:

df_output=  pd.DataFrame(["Mina,is,good", "Dania,is,A-good,Y-good", "Alice,is,A-good,Y-good,Z-good"]
          columns=['a'])
因此,如果一个单词重复,我想添加一个前缀,但也有三个不同的前缀: 如果一个单词重复一次,我想添加(“a-”,“Y-”),如果一个单词重复两次,我想添加(“a-”,“Y-”,“Z-”)


提前感谢

您可能需要使用以下自定义功能:



如果单词重复多次,即超过3、4、5次,该怎么办?不,最大重复次数为2次,与示例类似。重复次数是否仅连续发生?是的,它只会紧接着发生。但是有些行中有两个不同的单词被重复,比如“Mina,is,is,good,good”,我希望这两个单词的重复都是一样的谢谢你的回答。是否有一种方法可以处理重复的项目,但我们不想给它们添加前缀。有些行是这样的,例如:“D,D,D,Mina,is,good,good,D,D”。我不想在“D”前面加前缀。谢谢你的回复。是否有一种方法可以处理重复的项目,但我们不想给它们添加前缀。有些行是这样的,例如:“D,D,D,Mina,is,good,good,D,D”。我不想在“D”@tina.mario中添加前缀,我不知道如何才能做到这一点,最初的问题没有包括这一点。不幸的是,我不在,明天才有空。如果你能用最新的要求提出一个新问题就更好了。谢谢你,非常感谢你的帮助。我将提出一个新问题。
def fun(x):
    d = {0:'A-',1:'Y-',2:'Z-'} # mapping dictionary
    s = pd.Series(x.split(',')) #split each row as list and treat as series
    mask = s.duplicated(keep=False) #check for cases only which are duplicated
    s[mask] = s[mask].groupby(s).cumcount().map(d) + s[mask]
    return ','.join(s)

df['a'].apply(fun)
0                     Mina,is,good
1           Dania,is,A-good,Y-good
2    Alice,is,A-good,Y-good,Z-good
Name: a, dtype: object