У меня есть определенные данные для очистки, это ключи, в которых у ключей есть шесть ведущих нулей, от которых я хочу избавиться, и если ключи не заканчиваются на «AB C» или не заканчиваются на «DEFG» ", тогда мне нужно убрать код валюты в последних 3 индексах. Если ключ не начинается с начальных нулей, просто верните ключ как есть.
Для этого я написал функцию, которая работает со строкой, как показано ниже:
def cleanAttainKey(dirtyAttainKey):
if dirtyAttainKey[0] != "0":
return dirtyAttainKey
else:
dirtyAttainKey = dirtyAttainKey.strip("0")
if dirtyAttainKey[-3:] != "ABC" and dirtyAttainKey[-3:] != "DEFG":
dirtyAttainKey = dirtyAttainKey[:-3]
cleanAttainKey = dirtyAttainKey
return cleanAttainKey
Теперь Я создаю фиктивный фрейм данных, чтобы проверить его, но он сообщает об ошибках:
- фрейм данных
df = pd.DataFrame({'dirtyKey':["00000012345ABC","0000012345DEFG","0000023456DEFGUSD"],'amount':[100,101,102]},
columns=["dirtyKey","amount"])
Мне нужно получить новый столбец с именем «cleanAttainKey» в df, затем изменить каждое значение в «dirtyKey» с помощью функции «cleanAttainKey», затем назначить очищенный ключ новому столбцу «cleanAttainKey», однако, похоже, pandas не поддерживает этот тип модификации.
# add a new column in df called cleanAttainKey
df['cleanAttainKey'] = ""
# I want to clean the keys and get into the new column of cleanAttainKey
dirtyAttainKeyList = df['dirtyKey'].tolist()
for i in range(len(df['cleanAttainKey'])):
df['cleanAttainKey'][i] = cleanAttainKey(vpAttainKeyList[i])
Я получаю следующее сообщение об ошибке:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
Результат должен совпадать с df2 ниже:
df2 = pd.DataFrame({'dirtyKey':["00000012345ABC","0000012345DEFG","0000023456DEFGUSD"],'amount':[100,101,102],
'cleanAttainKey':["12345ABC","12345DEFG","23456DEFG"]},
columns=["dirtyKey","cleanAttainKey","amount"])
df2
Есть ли лучший способ изменить грязные ключи и получить новый столбец с чистыми ключами в Pandas? Спасибо