首页 > 解决方案 > 为 Pandas DataFrame 中的特定行组合行索引和行值(字符串)

问题描述

假设我有一个 Pandas DataFrame:

df = pd.DataFrame({'col1': range(10), 'col2': ['a', 'b', 'c', 'a', 'e', 'f', 'g', 'a', 'h', 'i']})

它看起来像:

   col1 col2
0     0    a
1     1    b
2     2    c
3     3    a
4     4    e
5     5    f
6     6    g
7     7    a
8     8    h
9     9    i

我想更新所有值df['col2'] == 'a'并将行索引附加到,a以便我们得到:

   col1 col2
0     0    a_0
1     1    b
2     2    c
3     3    a_3
4     4    e
5     5    f
6     6    g
7     7    a_7
8     8    h
9     9    i

标签: pythonpandas

解决方案


转换为字符串后,使用series.maskwithseries.eq比较值是否等于a和col1/indexadd

df['col2']=df['col2'].mask(df['col2'].eq('a'),df['col2'].add('_'+df.index.astype(str)))

#df['col2']=df['col2'].mask(df['col2'].eq('a'),df['col2'].add('_'+df['col1'].astype(str)))

print(df)

   col1 col2
0     0  a_0
1     1    b
2     2    c
3     3  a_3
4     4    e
5     5    f
6     6    g
7     7  a_7
8     8    h
9     9    i

推荐阅读