Description
Code Sample, a copy-pastable example if possible
import pandas as pd
import numpy as np
df = pd.DataFrame([[0,0,None],
[0,0,None],
[1,1,None]],
columns = ['A','B','C']).set_index(['A','B'])
# This succeeds
idx = (0,0)
df.set_value(idx,'C',5)
print df
# This fails
idx = (np.int64(0),np.int64(0))
df.set_value(idx,'C',8)
print df
Problem description
The above does a multirow assignment through the DataFrame.set_value()
function by two different indices. In the first case the index is built by plain python values. This succeeds. In the second case, which is superficially equal, the index is built with numpy.int64 integers (that I actually got back from a groupby call
). This case fails.
Is this behavior expected or is this a bug?
Expected Output
C
A B
0 0 5
0 5
1 1 None
C
A B
0 0 8
0 8
1 1 None
Output of pd.show_versions()
[paste the output of pd.show_versions()
here below this line]
INSTALLED VERSIONS
commit: None
python: 2.7.13.final.0
python-bits: 64
OS: Linux
OS-release: 4.11.9-300.fc26.x86_64
machine: x86_64
processor: x86_64
byteorder: little
LC_ALL: None
LANG: None
LOCALE: en_US.UTF-8
pandas: 0.20.1
pytest: 3.1.1
pip: 9.0.1
setuptools: 36.2.7
Cython: None
numpy: 1.12.0
scipy: 0.19.1
xarray: None
IPython: 5.4.1
sphinx: 1.6.3
patsy: None
dateutil: 2.6.0
pytz: 2016.10
blosc: None
bottleneck: 1.2.1
tables: 3.3.0
numexpr: 2.6.1
feather: None
matplotlib: 2.0.0
openpyxl: None
xlrd: 0.9.4
xlwt: 1.1.2
xlsxwriter: None
lxml: None
bs4: 4.6.0
html5lib: 0.999
sqlalchemy: 1.1.11
pymysql: None
psycopg2: None
jinja2: 2.9.6
s3fs: None
pandas_gbq: None
pandas_datareader: None