나는 Point()
이라는 클래스를 가지고 있으며, 포인트를 얻는 서비스에서 제공 한 JSON 대신 WKT가되도록하고 싶습니다.팬더가 올바르게 값을 시리즈에 표시하지 않음
Point 클래스는 dict를 상속하며 ipython에 열을 표시하거나 데이터 프레임 개체를 인쇄 할 때를 제외하고 클래스의 모든 항목이 훌륭하게 작동합니다.
은 내가 (간체 클래스) Point 클래스에서 다음을 시도했다 :
class Point(dict):
def __init__(self, iterable):
self._coords = iterable
def __str__(self):
return 'Point(%s,%s)' % (self._coords['x'], self._coords['y'])
def __repr__(self):
return 'Point(%s,%s)' % (self.x, self.y)
def _repr_html_(self):
return self.__str__()
def _repr_pretty_(self):
return self.__str__()
예 :
>>> pt = Point({"x" : -118.15, "y" : 33.80, "spatialReference" : {"wkid" : 4326}})
>>> df = pd.DataFrame(data=[['A', pt]], columns=['foo', 'SHAPE'])
>>> df.SHAPE
foo SHAPE
0 A {'x': -118.15, 'y': 33.8, 'spatialReference': ...
내가
>>> df.SHAPE[0]
"POINT (-118.15000000000001 33.799999999999997)"
을한다면 올바른입니다 원하는 출력.
DataFrame에서 클래스를 사용하려면 어떻게해야합니까? 대표 또는 str?
class foo(dict):
def __init__(self, iterable=None, **kwargs):
if iterable is None:
iterable =()
super(foo, self).__init__(iterable)
self.update(kwargs)
def __repr__(self):
return ",".join(self.keys())
def __str__(self):
return ",".join(self.keys())
f = foo({'alpha' : 'b',
'beta' : 'c'})
import pandas as pd
pd.DataFrame(data=[['A', 1, f]], columns=['D', 'F', 'G'])
시리즈 'G'의 출력 클래스 __repr__
또는 __str__
을 기리는되지 않은 : 여기
감사
파이썬에서, 당신이 여기 오버라이드 (override) 한object
에 내장 된 기능이 무엇인지
수업에 대한 간단한 예를 들어 주시겠습니까? 당신의 df는 무엇으로 구성되어 있습니까? 당신은 그것이 그때 그것이 DataFrame 인 dict라고 말했습니까? 시리즈? – stucash
더 견고한 예제를 추가했습니다. –
감사합니다. 당신은 또한 당신의'_init_' 메소드에 대한 코드 에러를 가지고있다. 나는 그것을 편집했다. 그것은 자기 주장을 놓쳤다. 또한 귀하의 예제는 귀하가 진술 한 결과를 생성하지 않습니다. 파이썬 3에서는'SHAPE' 컬럼을위한 빈 배열입니다. – stucash