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

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

新規登録して質問してみよう
ただいま回答率
85.35%
データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

Q&A

解決済

4回答

369閲覧

dataframe を縦持ちしたい

mn.py

総合スコア41

データ構造

データ構造とは、データの集まりをコンピュータの中で効果的に扱うために、一定の形式に系統立てて格納する形式を指します。(配列/連想配列/木構造など)

Python

Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

0グッド

1クリップ

投稿2020/10/20 04:53

元データ見本

イメージ説明

このようなdataを縦にもつにはどのようにすれば良いのでしょうか?

イメージ

|aa|bb|cc|
|1 |A|35|
|2 |A|32|
|3 |A|36|
|4 |A|34|
|5 |A|35|
|6 |A|35|
|7 |A|30|
|8 |A|32|
|9 |A|37|
|10|A|38|
|1 |B|36|
|2 |B|35|
|3 |B|32|
|4 |B|38|
|5 |B|33|
|6 |B|31|
|7 |B|33|
|8 |B|38|
|9 |B|35|
|10|B|38|
|1 |C|35|
|2 |C|38|
|3 |C|37|
|4 |C|31|
|5 |C|38|
|6 |C|30|
|7 |C|34|
|8 |C|30|
|9 |C|35|
|10|C|33|

やってみたこと

python

1orders_df = df.stack() 2orders_df

結果

思うようにはなりませんでした、、
|1| A |34|
| | B |38|
| | C |37|
|2| A |33|
| | B |30|
| | C |30|
|3| A |31|
| | B |37|
| | C |38|



以下略

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

みなさま、回答いただきありがとうございました!
いろんなパターン勉強になりました。
応用力を養わなければならないなぁ、と反省しました。
ありがとうございます。
また教えてください

投稿2020/10/20 14:22

mn.py

総合スコア41

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

縦持ちにするにはmeltを使います。

python

1df.melt() 2# variable value 3#0 A 35 4#1 A 32 5#2 A 36 6# ... 7#29 C 33

カラム名を合わせるために、いろいろ追加すると下記になります。

python

1df.rename_axis('aa').reset_index().melt(id_vars='aa', var_name='bb', value_name='cc')

投稿2020/10/20 07:29

bsdfan

総合スコア4794

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

(変換部分を)1行で書いてみた。

Python

1import pandas as pd 2import io 3 4txt = """ 5,A,B,C 61,35,36,35 72,32,35,38 83,36,32,37 94,34,38,31 105,35,33,38 116,35,31,30 127,30,33,34 138,32,38,30 149,37,35,35 1510,38,38,33 16""" 17 18df = pd.read_csv(io.StringIO(txt), index_col=[0]) 19 20df_m = pd.concat([pd.DataFrame(df[col]).rename(columns={col: 'cc'}).assign(bb=col) for col in df.columns], axis=0).reindex(columns=['bb', 'cc']) 21print(df_m)

result

1 bb cc 21 A 35 32 A 32 43 A 36 54 A 34 65 A 35 76 A 35 87 A 30 98 A 32 109 A 37 1110 A 38 121 B 36 132 B 35 143 B 32 154 B 38 165 B 33 176 B 31 187 B 33 198 B 38 209 B 35 2110 B 38 221 C 35 232 C 38 243 C 37 254 C 31 265 C 38 276 C 30 287 C 34 298 C 30 309 C 35 3110 C 33

投稿2020/10/20 05:44

Daregada

総合スコア11990

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

なんだか無理やりですが、こんな感じでしょうか。

python3

1import pandas as pd 2df = pd.DataFrame({"A":[*range(30,33)],"B":[*range(30,33)],"C":[*range(30,33)]}) 3print(df) 4# A B C 5#0 30 30 30 6#1 31 31 31 7#2 32 32 32 8 9orders_df = df.stack().reset_index() # stack後にmultiindex解除 10orders_df.columns = ["aa","bb","cc"] 11orders_df = orders_df.set_index("aa") 12orders_df = orders_df.sort_values(["bb","aa"]) 13print(orders_df) 14# bb cc 15#aa 16#0 A 30 17#1 A 31 18#2 A 32 19#0 B 30 20#1 B 31 21#2 B 32 22#0 C 30 23#1 C 31 24#2 C 32

投稿2020/10/20 05:25

jeanbiego

総合スコア3966

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.35%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問