2017-11-03 9 views
0

내 csv 파일에 도시 별 기상 정보가 있습니다. 한 행에는 시간이 갈수록 많은 열 (1200 개 이상)이 있습니다. 예를 들면 다음과 같습니다.팬더 데이터 프레임이 행을 열로 변경합니다.

id city_name dt_0  temp_0 hum_0 dt_1  temp_1 hum_1 dt_2  temp_2 hum_2 
1 Boston  2017110306 23.5 54.0 2017110310 21.4 40.0 2017110314 22.2 52.1 
2 Seattle 2017110306 20.4 60.0 2017110310 18.4 42.0 2017110314 18.3 50.5 

스키마가 유용하지 않습니다. 그래서 나는 python Pandas DataFrame으로 변환하고 싶습니다. 이 같이하는 내가 원하는

id city_name dt   temp hum 
1 Boston  2017110306 23.5 54.0 
1 Boston  2017110310 21.4 40.0 
1 Boston  2017110314 22.2 52.1 
2 Seattle 2017110306 20.4 60.0 
2 Seattle 2017110310 18.4 42.0 
2 Seattle 2017110314 18.3 50.5 

어떻게 그것을 할 수있다?

답변

2

먼저 set_index 다음 stack에 의해 split 마지막 모양 변경과 MultiIndex을 만듭니다

df = df.set_index(['id','city_name']) 
df.columns = df.columns.str.split('_', expand=True) 
df = df.stack().reset_index(level=2, drop=True).reset_index() 
print (df) 
    id city_name   dt hum temp 
0 1 Boston 2017110306 54.0 23.5 
1 1 Boston 2017110310 40.0 21.4 
2 1 Boston 2017110314 52.1 22.2 
3 2 Seattle 2017110306 60.0 20.4 
4 2 Seattle 2017110310 42.0 18.4 
5 2 Seattle 2017110314 50.5 18.3 
+0

을 정말 멋지다! 감사! – takaomag