2

I'm wondering why the former way of assignment (A) failed.

Can anyone explain this?

  • (A): .ix and then sliced
  • (B): .ix with sliced indexer

pandas version : 0.18.0

a = pd.DataFrame({"A":[10,11,12]})
indexer = [0,1,2]

# orginal DataFrame
print(a)
#     A
# 0  10
# 1  11
# 2  12

# (A) assignment failed
a.ix[indexer,"A"][0] = 999
print(a)
#     A
# 0  10
# 1  11
# 2  12

# (B) assignment succeeded
a.ix[indexer[0],"A"] = 999
print(a)
#      A
# 0  999
# 1   11
# 2   12

Thank you in advance.

Note: As of Pandas v0.20, .ix indexer is deprecated in favour of .iloc / .loc.

jpp
  • 159,742
  • 34
  • 281
  • 339
mmsstt
  • 21
  • 1
  • 1
    See the [docs](http://pandas.pydata.org/pandas-docs/stable/indexing.html#why-does-assignment-fail-when-using-chained-indexing) for a more detailed explanation – ayhan Sep 11 '16 at 16:50

0 Answers0