Adding to this thread, it's worth noting that if you explicitly include the SHAPE field in the list of fields you specify, it cause a TypeError. So if you're specifying a subset of fields, make sure you do not include SHAPE in that subset:
emp_fields = ['SHAPE', 'SECTOR', 'COUNT']
df_i = pd.DataFrame.spatial.from_featureclass(Path(gdb_empinv).joinpath(fc), where_clause=wherecl_emp, sr=sref_sacog, fields=emp_fields)
# Returns TypeError: Expected String or Unicode