質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

87.59%

今のデータを使って、新たなdataframeに作成

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 333

score 17

質問詳細
date      data
2015-6    1
2015-7    2
2016-1    3
2016-2    4
...
2016-12   5

以上のようなxlsxがあり

月     2015    2016
1                  3
2                  4
...       1        ...
12                 12
みたいなdataframeを作成したいです

ソースコード
//index_col=0でdateをindexで読み込み
df=pd.read_excel(...,index_col=0)
list1=[]

for year in range(2015,2019):
x=df[df.index.year==year]
y=x["data"]
list1.append(y)

//マージ
data = pd.concat(list1, axis=1,sort=True)

実行結果
date      data  data
2015-6    1    N
2015-7    2    N
2016-1    N    3
2016-2    N    4
...          ...   ...
2016-12   N    5
になってしまいました。

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

DataFrame.pivot_table()を使うとよいとおもいます。

import pandas as pd

df = pd.DataFrame({
    'date': pd.date_range('2015/6/1', '2016/12/1', freq='1MS'),
    'data': range(19)
})
#    data       date
#0      0 2015-06-01
#1      1 2015-07-01
#2      2 2015-08-01
#3      3 2015-09-01
#4      4 2015-10-01
#5      5 2015-11-01
#6      6 2015-12-01
#7      7 2016-01-01
#8      8 2016-02-01
#9      9 2016-03-01
#10    10 2016-04-01
#11    11 2016-05-01
#12    12 2016-06-01
#13    13 2016-07-01
#14    14 2016-08-01
#15    15 2016-09-01
#16    16 2016-10-01
#17    17 2016-11-01
#18    18 2016-12-01

pivot_df = df.pivot_table(index=df.date.dt.month, columns=df.date.dt.year, values='data')
#date  2015  2016
#date
#1      NaN   7.0
#2      NaN   8.0
#3      NaN   9.0
#4      NaN  10.0
#5      NaN  11.0
#6      0.0  12.0
#7      1.0  13.0
#8      2.0  14.0
#9      3.0  15.0
#10     4.0  16.0
#11     5.0  17.0
#12     6.0  18.0

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2019/03/20 16:13

    ありがとうございました。完璧に解決しました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 87.59%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る