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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

1829閲覧

python3 numpyのリストをpandas DataFrameに変換すると一列になる

comet0310

総合スコア59

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/12/16 13:20

編集2018/12/20 07:49

前提・問題、実現したいこと

このように二次元のnumpyリストをpandas dataframeに変換する際に一列に変換されてしまいました。

c_vecはnumpyの配列です

このデータを801944,100のデータにしたいです。
つまり写真のカンマで区切られている数字を一つずつ違う列として認識させたいです。

イメージ説明

上の写真のようにです。

考えてもわかりませんでした。
よろしければお知恵をお貸しください。

イメージ説明

こうなりました

イメージ説明

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

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

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

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

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

kzm4269

2018/12/19 00:50

実行したソースコード、実行結果を明記すると回答が得られやすいと思います。
comet0310

2018/12/20 02:44

ありがとうございます。 写真を追加させていただきました。 よろしくお願いします。
kzm4269

2018/12/20 06:09

以下のコードを実行して、結果を教えてください。 ``` print(type(c_vec)) print(c_vec.shape, c_vec.dtype) ```
comet0310

2018/12/20 07:17

本文に結果をのせました。 よろしくお願いします。
guest

回答1

0

ベストアンサー

どうやらc_vecは「二次元のnumpyリスト」ではなく「listを要素とした1次元配列」になっているようです。
こういう配列ができてしまうのは、列数が行によって異なるデータを無理やり2次元配列にしようとした場合が多いです。心当たりはないでしょうか?

列数が100でない行があるかは、例えば以下のコードで調べることができます。

Python

1for i, row in enumerate(c_vec): 2 if len(row) != 100: 3 print(i, len(row))

もし、100列目以降のデータは不要で100列に満たない行は末尾をNaNで埋めても良いのであれば
以下のコードでpandas.DataFrameに変換することができます。

Python

1import numpy as np 2 3ncols = 100 4df = pd.DataFrame([ 5 list(row)[:ncols] + [np.nan] * max(0, len(row) - ncols) 6 for row in c_vec 7]) 8df

投稿2018/12/20 07:40

編集2018/12/20 07:40
kzm4269

総合スコア184

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

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

kzm4269

2018/12/20 07:56

``` import numpy as np ncols = 100 df = pd.DataFrame([ list(row)[:ncols] + [np.nan] * max(0, len(row) - ncols) for row in c_vec if np.ndim(row) == 1 ]) df ```
comet0310

2018/12/20 08:51

ありがとうございます。pandasのデータに無事整形できました。 こちらのコードはリストの次元数が1の時pandasの配列に組み込むという理解で大丈夫でしょうか。 またその際、次元数が1ではなく削除されてしまった配列の番号を知りたいのですがどのようにすればいいでしょうか。 なんどもなんどもすいません! よろしくお願いします
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問