gpt4 book ai didi

pandas - 替换字符串 Pandas 中的字母

转载 作者:行者123 更新时间:2023-12-03 18:05:46 25 4
gpt4 key购买 nike

我有这个数据框:

import pandas as pd

columns = ['ID','Data']
data = [['26A20',123],
['12A20',123],
['23A20',123]]
df = pd.DataFrame.from_records(data=data, columns=columns)

>>df
ID Data
0 26A20 123
1 12A20 123
2 23A20 123

还有一个简单的任务,当 ID 以 26 或 23 开头时,从 ID 中删除 A:s:
df.loc[df['ID'].str.startswith(('23','26'))]['ID'] = df['ID'].str.replace('A','')

SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame. Try using .loc[row_indexer,col_indexer] = value instead



没有任何变化:
>>df
ID Data
0 26A20 123
1 12A20 123
2 23A20 123

我使用 loc,我做错了什么?

最佳答案

删除双 ][为避免 chained assignments :

df.loc[df['ID'].str.startswith(('23','26')), 'ID'] = df['ID'].str.replace('A','')
print (df)
ID Data
0 2620 123
1 12A20 123
2 2320 123

也可以在两侧过滤以减少函数 replace 的执行:
mask = df['ID'].str.startswith(('23','26'))
df.loc[mask, 'ID'] = df.loc[mask, 'ID'].str.replace('A','')
print (df)
ID Data
0 2620 123
1 12A20 123
2 2320 123

关于pandas - 替换字符串 Pandas 中的字母,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52114249/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com