がここに私のDFである:今Pythonのパンダ:場所に基づいて値を置き換えるものではありませインデックス値
In[12]: df = pd.DataFrame(data = list("aabbcc"), columns = ["s"], index=range(11,17))
In[13]: df
Out[13]:
s
11 a
12 a
13 b
14 b
15 c
16 c
、インデックス値に基づいて値を置き換える:
In[14]: df.loc[11, "s"] = 'A'
In[15]: df
Out[15]:
s
11 A
12 a
13 b
14 b
15 c
16 c
In[16]: df.ix[12, "s"] = 'B'
In[17]: df
Out[17]:
s
11 A
12 B
13 b
14 b
15 c
16 c
は同じベースを行うことが可能です位置でないインデックス値、このような何かが、それはとValueErrorを示し(ValueError: Can only index by location with a [integer, integer slice (START point is INCLUDED, END point is EXCLUDED), listlike of integers, boolean array]
):
In[18]: df.iloc[1, "s"] = 'b'
そして、私はこのような何かしようとした場合:
df.s.iloc[1] = "b"
を私はこの警告を受ける:
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
文字列で整数ベースのインデックスを使用しようとしているため、最初のエラーが発生しています。 'df.iloc [1、0] = 'b''を試してください。これはあなたが実行している完全なコードですか? 'df.siloc [1] =" b "'は実行時にエラーを生成しません。 'df'が別のデータフレームをスライスして作成されている場合には、警告が表示されることが予想されます。 – johnchase
@johnchase:優れた説明、ありがとう:) – ramesh