Привет всем, я получаю сообщение об ошибке с индексированием / возвращением в цепочку вместо представления в Pandas. Вот мой код:
import pandas as pd
duplicates = pd.read_csv("dupes_test.csv", parse_dates=["Updated At"])
dupe_df = pd.DataFrame(duplicates)
dupe_sorted = dupe_df.sort_values(['Email Address', 'Updated At'], ascending=False)
![dataframe](https://i.stack.imgur.com/VL7M7.png)
cols_to_change = list(dupe_sorted.columns)
opt_out_count = 0
unchanged_count = 0
error = 0
Вот мой код для l oop:
for dupe in range (0, dupe_sorted.shape[0]):
try:
if dupe_sorted["Email Address"].iloc[dupe] == dupe_sorted["Email Address"].iloc[dupe + 1]:
for col in cols_to_change:
if dupe_sorted[col].iloc[dupe + 1] == 'Opt Out':
dupe_sorted[col].iloc[dupe] = "Opt Out"
opt_out_count +=1
else:
unchanged_count +=1
except:
error += 1
print("We're Done")
Сообщение об ошибке:
//anaconda3/envs/DtownPlayground/lib/python3.6/site-packages/pandas/core/indexing.py:670: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy
self._setitem_with_indexer(indexer, value)
Кажется, что мой вывод меняется, иногда он работает как надо, и я получаю следующий вывод:
print(f"Opted Out: {opt_out_count}, Unchanged: {unchanged_count}, Error: {error}")
Opted Out: 22, Unchanged: 8, Error: 1
В других случаях он не обновляет ни одно из значений. Наверное, я запутался, потому что я не использую цепную индексацию, и я не знаю, почему Pandas выдает мне это предупреждение. Кроме того, дайте мне знать, если мне нужно вставить фрейм данных в другом формате для простоты использования!