0
해당 행의 각각의 부모 행을 반복 :중첩 팬더가 열로 밖으로 dataframe 폭발, 나는 이런 식으로 뭔가 기본적으로 가깝다 팬더 DataFrame이
import json
import pandas as pd
df = pd.DataFrame([
{'a': 1, 'b': 2, 'extra': 0},
{'a': 10, 'b': 20, 'extra': 0}
])
df_c1 = pd.io.json.read_json(json.dumps({'row1': {'c1': -1, 'c2': -2}}))
df_c2 = pd.io.json.read_json(json.dumps({
'row1': {'c1': -10, 'c2': -20},
'row2': {'c1': -100, 'c2': -200},
'row3': {'c1': -1000, 'c2': -2000}
}))
df['c'] = [df_c1.T, df_c2.T]
내가 같은 형식 것 하나 싶어를 이 :
예 :
goal = pd.concat([
pd.DataFrame({'row1': {'a': 1, 'b': 2, 'c1': -1, 'c2': -2}}).T,
pd.DataFrame({'row1': {'a': 10, 'b': 20, 'c1': -10, 'c2': -20}}).T,
pd.DataFrame({'row2': {'a': 10, 'b': 20, 'c1': -100, 'c2': -200}}).T,
pd.DataFrame({'row3': {'a': 10, 'b': 20, 'c1': -1000, 'c2': -2000}}).T
])
In [1]: goal
Out[1]:
a b c1 c2
row1 1 2 -1 -2
row1 10 20 -10 -20
row2 10 20 -100 -200
row3 10 20 -1000 -2000
[4 rows x 4 columns]
몇 가지주의해야 할 :
- 인덱스 I 만
['a', 'b']
포함 할 - 가
'extra'
취출 된c
열의 데이터 프레임에 대응하는 행의 일치 - 메인
df
2 번째 행df['c']
위한3
값을 가지며,뿐만df['c'] = [df_c1.T, df_c2.T]
더 이상 전치 포함 없습니다 : 예, 그a
및b
값은c
은 쉽게, 내가 줄 변경할 수 있습니다 경우 - 의 각 행에 대해 한 번씩 3 번 반복
df['c'] = [df_c1, df_c2]
을하지만, 소스 데이터가 JSON 형식으로 표현하기 wn.
현재 해결 방법은 원본 열 'c'
의 각 요소를 반복 한 다음 유지하려는 열을 분할하는 동안 부모 행과 결합하는 것입니다. 이 데이터 프레임을 목록에 추가 한 다음 모든 데이터 프레임 목록에서 최종 pd.concat
을 수행합니다.
느리고 터무니 없지만 작동합니다. 나는 좀 더 빠르고 우아한 것을 원합니다.
또한, 이유는 전체 데이터 프레임은 외부에서 읽어하지만 하나의 열을 발생하기 때문에 모두 JSON이되어야합니다. pd.io.json.read_json()을 컬럼에 적용하지만 확장해야하는 DataFrames 컬럼이 있습니다. – Hardeep