Mam pandasową ramkę danych z dwiema kolumnami: x i wartością. Chcę znaleźć wszystkie wiersze, w których x == 10, a dla wszystkich tych wierszy ustaw wartość = 1000. Próbowałem poniższy kod, ale pojawia się ostrzeżenie, żepython pandy: jak uniknąć przykutego przypisania
A value is trying to be set on a copy of a slice from a DataFrame.
rozumiem mogę tego uniknąć stosując .LOC lub .IX, ale chciałbym najpierw trzeba znaleźć lokalizację lub indeksy wszystkich wierszy, które spełniają mój stan x == 10. Czy istnieje bardziej bezpośredni sposób?
Dzięki!
import numpy as np
import pandas as pd
df=pd.DataFrame()
df['x']=np.arange(10,14)
df['value']=np.arange(200,204)
print df
df[ df['x']== 10 ]['value'] = 1000 # this doesn't work
print df
Przepraszam, co jest nie tak z użyciem zalecanego pliku 'df.loc [df ['x'] == 10, 'value'] = 1000'? – EdChum
Dzięki, nie zdawałem sobie sprawy, że to opcja. Może to tylko ja, może dlatego, że jestem zbytnio przyzwyczajony do SQL i zbyt nowy w Pandach, ale nadal uważam, że niektóre zadania, które są banalne w SQL, są niechlujne w pandach, a dokumentacja nie jest zbyt jasna –
[docs] (http://pandas.pydata.org/pandas-docs/stable/indexing.html#indexing-view-versus-copy) są dość jasne i pojawia się ostrzeżenie informujące, że to, co robisz, może nie działać – EdChum