pandas DataFrame에 일부 메타 정보/메타 데이터를 추가 할 수 있습니까?pandas DataFrame에 메타 정보/메타 데이터 추가
예를 들어, 기기의 이름 등의 데이터, 책임 악기를 측정하는 데 사용
한 가지 해결 방법은 해당 정보로 열을 생성하는 것입니다,하지만 단일 정보를 저장하기 위해 낭비 보인다 모든 행에!
pandas DataFrame에 일부 메타 정보/메타 데이터를 추가 할 수 있습니까?pandas DataFrame에 메타 정보/메타 데이터 추가
예를 들어, 기기의 이름 등의 데이터, 책임 악기를 측정하는 데 사용
한 가지 해결 방법은 해당 정보로 열을 생성하는 것입니다,하지만 단일 정보를 저장하기 위해 낭비 보인다 모든 행에!
물론, 대부분의 파이썬 객체처럼, 당신이 pandas.DataFrame
에 새로운 속성을 첨부 할 수 있습니다 : 당신이 DataFrame에 속성을 첨부 할 수 있지만, 작업과 같은합니다 (DataFrame에서 수행, 그러나,
import pandas as pd
df = pd.DataFrame([])
df.instrument_name = 'Binky'
주 groupby
, pivot
, join
또는 loc
)는 메타 데이터가 첨부되지 않은 새 데이터 프레임 을 반환 할 수 있습니다. 팬더는 아직 전파의 확실한 방법이 없습니다metadata attached to DataFrames.
의 파일을에 보존 할 수 있습니다. 메타 데이터를 HDF5 파일 here에 저장하는 방법의 예를 찾을 수 있습니다.
아니요. @unutbu가 언급 한대로 메타 데이터가 포함 된 특성을 DataFrame 클래스에 추가 할 수 있지만 많은 DataFrame 메서드는 새 DataFrame을 반환하므로 메타 데이터가 손실됩니다. 데이터 프레임을 조작해야하는 경우 메타 데이터와 DataFrame을 다른 클래스로 래핑하는 것이 가장 좋습니다. GitHub에 대한이 토론을 참조하십시오 : https://github.com/pydata/pandas/issues/2485
더 나은 메타 데이터를 지원하는 MetaDataFrame 객체를 추가하려면 현재 pull request이 열려 있습니다.
본인이 직접이 문제를 접했습니다. pandas 0.13에서 DataFrames에는 새 DataFrames를 반환하는 함수를 통해 지속되는 _metadata 특성이 있습니다. 또한 직렬화 그냥 잘 살아남을 것으로 보인다 (나는 단지 json 시도했지만 hdf뿐만 아니라 덮여 상상).
'_metadata'는 공용 API의 일부가 아니므로이 기능을 사용하지 않는 것이 좋습니다. – shoyer
@Stephan 당신은 그걸 좀 상세하게 설명 할 수 있습니까? 공개 API의 일부가되는 것이 중요한 이유는 무엇입니까? 귀하의 진술은 0.15 버전에도 해당됩니까? – TomCho
@Stephan 죄송합니다.이 질문에 대한 귀하의 답변을 찾았습니다 : http://stackoverflow.com/a/28054711. 하지만 오늘도 여전히 사실입니까? 래퍼를 만드는 것보다 더 좋은 대안이 있습니까? – TomCho
매우 늦게 오면 I/O를 통해 메타 데이터를 유지해야하는 경우 유용 할 것으로 생각했습니다. 이것을 달성하기 위해 사용하고있는 비교적 새로운 패키지 h5io이 있습니다.
몇 가지 일반적인 형식에 대해 HDF5에서 빠른 읽기/쓰기가 가능해야하며 그 중 하나는 데이터 프레임입니다. 예를 들어 사전에 데이터 프레임을 넣고 메타 데이터를 사전에 필드로 포함 할 수 있습니다. 예컨대 :
save_dict = dict(data=my_df, name='chris', record_date='1/1/2016')
h5io.write_hdf5('path/to/file.hdf5', save_dict)
in_data = h5io.read_hdf5('path/to/file.hdf5')
df = in_data['data']
name = in_data['name']
etc...
또 다른 옵션은 어떤면에서는 더 복잡 xray 같은 프로젝트, 조사하는 것입니다,하지만 난 당신이 메타 데이터를 사용할 수 있도록하고 DataFrame로 변환 꽤 쉽게 않습니다 생각합니다.
다른 답변 및 의견에서 언급했듯이 _metadata
은 공개 API의 일부가 아니므로 프로덕션 환경에서 사용하는 것은 좋지 않습니다. 그러나 연구 프로토 타이핑에 사용하고 작동을 멈 추면 대체 할 수도 있습니다. 그리고 지금은 groupby
/apply
과 함께 작동하는데 도움이됩니다.이것은 (내가 다른 답변에서 찾을 수 없습니다) 예입니다
df = pd.DataFrame([1, 2, 2, 3, 3], columns=['val'])
df.my_attribute = "my_value"
df._metadata.append('my_attribute')
df.groupby('val').apply(lambda group: group.my_attribute)
출력 : 악기 이름의 당신 선택을위한
val
1 my_value
2 my_value
3 my_value
dtype: object
하나! HDFStore에 이러한 추가 속성을 덤프하려는 경험이 있습니까? –
@DanAllan :'store = pd.HDFStore (...)'이면, 속성은'store.root._v_attrs.key = value'로 저장 될 수 있습니다. – unutbu
이것을 사용할 수있는 다른 사람에게 : 문서에 이에 대한 섹션이 추가되었습니다. http://pandas.pydata.org/pandas-docs/dev/cookbook.html#hdfstore –