다음 dataframe를 갖는,python pandas를 사용하여 여러 행이있는 python 데이터 프레임을 하나의 행으로 변환 하시겠습니까?
df = pd.DataFrame({'device_id' : ['0','0','1','1','2','2'],
'p_food' : [0.2,0.1,0.3,0.5,0.1,0.7],
'p_phone' : [0.8,0.9,0.7,0.5,0.9,0.3]
})
print(df)
출력 :
device_id p_food p_phone
0 0 0.2 0.8
1 0 0.1 0.9
2 1 0.3 0.7
3 1 0.5 0.5
4 2 0.1 0.9
5 2 0.7 0.3
어떻게 이러한 변화를 달성하기 위해?
df2 = pd.DataFrame({'device_id' : ['0','1','2'],
'p_food_1' : [0.2,0.3,0.1],
'p_food_2' : [0.1,0.5,0.7],
'p_phone_1' : [0.8,0.7,0.9],
'p_phone_2' : [0.9,0.5,0.3]
})
print(df2)
출력 :
device_id p_food_1 p_food_2 p_phone_1 p_phone_2
0 0 0.2 0.1 0.8 0.9
1 1 0.3 0.5 0.7 0.5
2 2 0.1 0.7 0.9 0.3
내가 AGG, 그것을 적용, GROUPBY를 사용 달성하려고 ...
하지만 여전히 이러한 변화를 달성 할 수 없다.
업데이트
내 마지막 코드 :
df.drop_duplicates('device_id', keep='first').merge(df.drop_duplicates('device_id', keep='last'),on='device_id')
.
내 감사의 말만으로는 충분하지 않습니다. 당신은 여전히
df = df.groupby('device_id')['p_food', 'p_phone'].apply(lambda x: pd.DataFrame(x.values)).unstack().reset_index()
df.columns = df.columns.droplevel()
df.columns = ['device_id','p_food_1', 'p_food_2', 'p_phone_1','p_phone_2']
을 GROUPBY 사용하여 대답을 찾고 있다면
가능한 복제를 얻을. 팬더] (http://stackoverflow.com/questions/34988040/long-to-wide-data-pandas) –
나에게 또 다른 대답을 주셔서 감사합니다. –