python - 为 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
解决方案
转换为字符串后,使用series.mask
withseries.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
推荐阅读
- python - 列表中每个数字的平均值
- c# - 我无法将 MATLAB 注册为 COM 服务器
- python - 如何在 Netflix 数据中使用 LabelEncoder?
- python - 自动化月报 Python-Jira
- python - 如何制作python数组类的副本?
- facebook - Facebook 身份验证:出了点问题
- php - 如何将自定义js文件添加到laravel-backpack中特定实体CRUD的每个页面
- c++ - c++ 重复 fwrite fflush 需要很长时间
- powershell - 比较来自 csv1 和 csv2 的 IPAddress 列,如果匹配则从 csv2 获取正常运行时间列
- prolog - Prolog 逻辑拼图失败