修改数据框中的重复行 (Python)
Modify duplicated rows in dataframe (Python)
我正在使用 Pandas 中的数据框,我需要一个解决方案来自动修改其中一个具有重复值的列。它是一个列类型 'object',我需要修改重复值的名称。数据框如下:
City Year Restaurants
0 New York 2001 20
1 Paris 2000 40
2 New York 1999 41
3 Los Angeles 2004 35
4 Madrid 2001 22
5 New York 1998 33
6 Barcelona 2001 15
如您所见,纽约重复了 3 次。我想创建一个新的数据框,其中这个值将被自动修改,结果如下:
City Year Restaurants
0 New York 2001 2001 20
1 Paris 2000 40
2 New York 1999 1999 41
3 Los Angeles 2004 35
4 Madrid 2001 22
5 New York 1998 1998 33
6 Barcelona 2001 15
我也会对“纽约 1”、“纽约 2”和“纽约 3”感到满意。任何选项都可以。
使用 np.where
,如果重复则修改城市列
df['City']=np.where(df['City'].duplicated(keep=False), df['City']+' '+df['Year'].astype(str),df['City'])
不使用 numpy
的另一种方法是使用 groupby.cumcount()
,这将为您提供替代的 New York 1、New York 2,但适用于所有值。
df['City'] = df['City'] + ' ' + df.groupby('City').cumcount().add(1).astype(str)
City Year Restaurants
0 New York 1 2001 20
1 Paris 1 2000 40
2 New York 2 1999 41
3 Los Angeles 1 2004 35
4 Madrid 1 2001 22
5 New York 3 1998 33
6 Barcelona 1 2001 15
要仅在重复的情况下增加,您可以使用 loc
:
df.loc[df[df.City.duplicated(keep=False)].index, 'City'] = df['City'] + ' ' + df.groupby('City').cumcount().add(1).astype(str)
City Year Restaurants
0 New York 1 2001 20
1 Paris 2000 40
2 New York 2 1999 41
3 Los Angeles 2004 35
4 Madrid 2001 22
5 New York 3 1998 33
6 Barcelona 2001 15
我正在使用 Pandas 中的数据框,我需要一个解决方案来自动修改其中一个具有重复值的列。它是一个列类型 'object',我需要修改重复值的名称。数据框如下:
City Year Restaurants
0 New York 2001 20
1 Paris 2000 40
2 New York 1999 41
3 Los Angeles 2004 35
4 Madrid 2001 22
5 New York 1998 33
6 Barcelona 2001 15
如您所见,纽约重复了 3 次。我想创建一个新的数据框,其中这个值将被自动修改,结果如下:
City Year Restaurants
0 New York 2001 2001 20
1 Paris 2000 40
2 New York 1999 1999 41
3 Los Angeles 2004 35
4 Madrid 2001 22
5 New York 1998 1998 33
6 Barcelona 2001 15
我也会对“纽约 1”、“纽约 2”和“纽约 3”感到满意。任何选项都可以。
使用 np.where
,如果重复则修改城市列
df['City']=np.where(df['City'].duplicated(keep=False), df['City']+' '+df['Year'].astype(str),df['City'])
不使用 numpy
的另一种方法是使用 groupby.cumcount()
,这将为您提供替代的 New York 1、New York 2,但适用于所有值。
df['City'] = df['City'] + ' ' + df.groupby('City').cumcount().add(1).astype(str)
City Year Restaurants
0 New York 1 2001 20
1 Paris 1 2000 40
2 New York 2 1999 41
3 Los Angeles 1 2004 35
4 Madrid 1 2001 22
5 New York 3 1998 33
6 Barcelona 1 2001 15
要仅在重复的情况下增加,您可以使用 loc
:
df.loc[df[df.City.duplicated(keep=False)].index, 'City'] = df['City'] + ' ' + df.groupby('City').cumcount().add(1).astype(str)
City Year Restaurants
0 New York 1 2001 20
1 Paris 2000 40
2 New York 2 1999 41
3 Los Angeles 2004 35
4 Madrid 2001 22
5 New York 3 1998 33
6 Barcelona 2001 15