В следующем фрагменте кода я группирую точки DataFrame по их значению X в бункеров. Теперь я хочу присвоить идентификатор группы столбцу Y, но панды продолжают бросать мне предупреждение типа SettingWithCopyWarning
. Что я делаю не так?Изменение предупреждения столбцов группы pandas
import numpy as np
import pandas as pd
d = np.random.random((10, 2))
d[:, 1] = 0
m = pd.DataFrame(d, columns=("x", "gid"))
dx = 0.2
grp = m.groupby(lambda i: int(m["x"][i]/dx))
gid = 1
for name, group in grp:
group["gid"][:] = gid # This line crashes!
gid += 1
print(m)
Вот предупреждение брошено:
/usr/lib/python3.4/site-packages/pandas/core/series.py:677: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
self._set_with(key, value)
sys:1: SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
See the the caveats in the documentation: http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy
Посмотрите http://stackoverflow.com/a/16949498/1571826 для более элегантный и гибкий подход к биннингам. –
Какую версию панд вы используете? Я также запускаю python 3.4, и я не получил никакого предупреждения, когда я запускал ваш код точно так, как есть. – KCzar
Прекрасно работает в python 3.4.3, pandas 0.16.1 и numpy 1.9.2 – EdChum