2017-11-03 12 views
0

私のCSVファイルには都市別の気象情報があります。 1つの行には、(1200以上の)列が非常に多くあります。たとえば、それは次のようになります。パンダDataFrameで列を行に変更

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

関連する問題