Environment:
Windows 10
Python 3.8.5
ArcGIS for Python 1.8.2
Querying ArcGIS Online
The following code works, output as csv, then read that csv back in as a Dataframe:
x <SPAN class="operator token">=</SPAN> gis<SPAN class="punctuation token">.</SPAN>admin<SPAN class="punctuation token">.</SPAN>history<SPAN class="punctuation token">(</SPAN>start_date<SPAN class="operator token">=</SPAN>start_date<SPAN class="punctuation token">,</SPAN> to_date<SPAN class="operator token">=</SPAN>end_date<SPAN class="punctuation token">,</SPAN> num<SPAN class="operator token">=</SPAN><SPAN class="number token">100</SPAN><SPAN class="punctuation token">,</SPAN> data_format<SPAN class="operator token">=</SPAN><SPAN class="string token">'csv'</SPAN><SPAN class="punctuation token">)</SPAN>
df <SPAN class="operator token">=</SPAN> pd<SPAN class="punctuation token">.</SPAN>read_csv<SPAN class="punctuation token">(</SPAN>x<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN><SPAN></SPAN><SPAN></SPAN></SPAN>
Leaving everything the same, but trying to output directly as a Dataframe:
df <SPAN class="operator token">=</SPAN> gis<SPAN class="punctuation token">.</SPAN>admin<SPAN class="punctuation token">.</SPAN>history<SPAN class="punctuation token">(</SPAN>start_date<SPAN class="operator token">=</SPAN>start_date<SPAN class="punctuation token">,</SPAN> to_date<SPAN class="operator token">=</SPAN>end_date<SPAN class="punctuation token">,</SPAN> num<SPAN class="operator token">=</SPAN><SPAN class="number token">100</SPAN><SPAN class="punctuation token">,</SPAN> data_format<SPAN class="operator token">=</SPAN><SPAN class="string token">'df'</SPAN><SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
Produces a TypeError :
TypeError<SPAN class="punctuation token">:</SPAN> list indices must be integers <SPAN class="operator token">or</SPAN> slices<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">not</SPAN> str
Full Traceback:
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN>
TypeError Traceback <SPAN class="punctuation token">(</SPAN>most recent call last<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token"><</SPAN>ipython<SPAN class="operator token">-</SPAN>input<SPAN class="number token">-69</SPAN><SPAN class="operator token">-</SPAN>d921e39fa9da<SPAN class="operator token">></SPAN> <SPAN class="keyword token">in</SPAN> <SPAN class="operator token"><</SPAN>module<SPAN class="operator token">></SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN> <SPAN class="number token">1</SPAN> df <SPAN class="operator token">=</SPAN> gis<SPAN class="punctuation token">.</SPAN>admin<SPAN class="punctuation token">.</SPAN>history<SPAN class="punctuation token">(</SPAN>start_date<SPAN class="operator token">=</SPAN>start_date<SPAN class="punctuation token">,</SPAN> to_date<SPAN class="operator token">=</SPAN>end_date<SPAN class="punctuation token">,</SPAN> num<SPAN class="operator token">=</SPAN><SPAN class="operator token">-</SPAN><SPAN class="number token">1</SPAN><SPAN class="punctuation token">,</SPAN> data_format<SPAN class="operator token">=</SPAN><SPAN class="string token">'df'</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">2</SPAN> <SPAN class="comment token"># df = pd.read_csv(x)</SPAN>
<SPAN class="operator token">~</SPAN>\Anaconda3\lib\site<SPAN class="operator token">-</SPAN>packages\arcgis\gis\admin\agoladmin<SPAN class="punctuation token">.</SPAN>py <SPAN class="keyword token">in</SPAN> history<SPAN class="punctuation token">(</SPAN>self<SPAN class="punctuation token">,</SPAN> start_date<SPAN class="punctuation token">,</SPAN> to_date<SPAN class="punctuation token">,</SPAN> num<SPAN class="punctuation token">,</SPAN> all_events<SPAN class="punctuation token">,</SPAN> event_ids<SPAN class="punctuation token">,</SPAN> event_types<SPAN class="punctuation token">,</SPAN> actors<SPAN class="punctuation token">,</SPAN> owners<SPAN class="punctuation token">,</SPAN> actions<SPAN class="punctuation token">,</SPAN> ips<SPAN class="punctuation token">,</SPAN> sort_order<SPAN class="punctuation token">,</SPAN> data_format<SPAN class="punctuation token">,</SPAN> save_folder<SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">338</SPAN>
<SPAN class="number token">339</SPAN> res <SPAN class="operator token">=</SPAN> self<SPAN class="punctuation token">.</SPAN>_gis<SPAN class="punctuation token">.</SPAN>_con<SPAN class="punctuation token">.</SPAN>post<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">,</SPAN> params<SPAN class="punctuation token">)</SPAN>
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">></SPAN> <SPAN class="number token">340</SPAN> data<SPAN class="punctuation token">.</SPAN>extend<SPAN class="punctuation token">(</SPAN>data<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'items'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN>
<SPAN class="number token">341</SPAN> <SPAN class="keyword token">while</SPAN> len<SPAN class="punctuation token">(</SPAN>res<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'items'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">)</SPAN> <SPAN class="operator token">></SPAN> <SPAN class="number token">0</SPAN> <SPAN class="operator token">and</SPAN> res<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'nextKey'</SPAN><SPAN class="punctuation token">]</SPAN><SPAN class="punctuation token">:</SPAN>
<SPAN class="number token">342</SPAN> params<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'start'</SPAN><SPAN class="punctuation token">]</SPAN> <SPAN class="operator token">=</SPAN> res<SPAN class="punctuation token">[</SPAN><SPAN class="string token">'nextKey'</SPAN><SPAN class="punctuation token">]</SPAN>
TypeError<SPAN class="punctuation token">:</SPAN> list indices must be integers <SPAN class="operator token">or</SPAN> slices<SPAN class="punctuation token">,</SPAN> <SPAN class="operator token">not</SPAN> str
<SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN><SPAN class="operator token">-</SPAN>The data variable is a list, so I don’t think we can do this: data['items']
I THINK it’s meant to be: data.extend(res['items']) on line 340 where res is the response from the post (line 339)
res <SPAN class="operator token">=</SPAN> self<SPAN class="punctuation token">.</SPAN>_gis<SPAN class="punctuation token">.</SPAN>_con<SPAN class="punctuation token">.</SPAN>post<SPAN class="punctuation token">(</SPAN>url<SPAN class="punctuation token">,</SPAN> params<SPAN class="punctuation token">)</SPAN><SPAN class="line-numbers-rows"><SPAN></SPAN></SPAN>
Similarly, on line 345 I changed:
data.extend(data['items']) --> data.extend(res['items'])
Everything seems to be working, but wasn’t sure if my “fix” might break something else? So I was hoping to get some feedback or an “all clear” message that this fix "works" and won't break other things. Thanks! 