🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
Python

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

Q&A

解決済

1回答

880閲覧

【python】エクセルのセル形式から3次元配列への変換

KooToo

総合スコア6

Python

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

0グッド

0クリップ

投稿2019/10/03 05:24

編集2019/10/03 05:39

追記:表示が崩れるので画像を撮りました

A B C D
1 |20 |200 |2000

2 10 |1 |2 |3

3 100 |4 |5 |6

4 1000 |7 |8 |9

このようなエクセルファイルを読み込み、
下記の様な3次元配列にするにはどのようにすれば良いでしょうか。

(20,10,1),(200,10,2),(2000,10,3),(20,100,4)......(2000,1000,9)

作業の目的としては、1行目の数字をx軸 A列目の数字をy軸 セル内の数字がz軸、
として3次元プロットを作ることです。

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

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

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

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

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

guest

回答1

0

ベストアンサー

タグに**"Python"**があるので Pythonでの処理でよいのかな?
であれば、pandas使ってこんな感じで書けます。

Python

1import pandas as pd 2 3df = pd.read_excel('data.xlsx', index_col=0) 4ret = list(df.T.stack().to_frame().itertuples(name=None)) 5print(ret) 6#[((20, 10), 1), ((20, 100), 4), ((20, 1000), 7), ((200, 10), 2), ((200, 100), 5), ((200, 1000), 8), ((2000, 10), 3), ((2000, 100), 6), ((2000, 1000), 9)]

【修正】
上は結果がまちがっていたのでマルチインデックス解除版

Python

1ret = list(df.T.stack().reset_index().itertuples(index=False, name=None)) 2print(ret) 3#[(20, 10, 1), (20, 100, 4), (20, 1000, 7), (200, 10, 2), (200, 100, 5), (200, 1000, 8), (2000, 10, 3), (2000, 100, 6), (2000, 1000, 9)]

投稿2019/10/03 06:30

編集2019/10/03 06:41
magichan

総合スコア15898

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

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

magichan

2019/10/03 06:39

あっゴメン。マルチインデックスは解除しないと駄目か・・・
KooToo

2019/10/04 04:34

無事できました!ありがとうございます。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問