1. ホーム
  2. python

Pandasで可変の列数を扱う - Python

2023-09-30 11:18:48

質問

次のようなデータセットがあります(最大で5列ですが、もっと少なくてもかまいません)。

1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4
....

pandas read_tableを使って、5列のデータフレームにこれを読み込もうとしています。私は、追加のマッサージなしでこれを読み込みたいと思います。

私が試した場合

import pandas as pd
my_cols=['A','B','C','D','E']
my_df=pd.read_table(path,sep=',',header=None,names=my_cols)

エラーが発生しました - "列名には5つのフィールドがあり、データには3つのフィールドがあります"。

データを読み込む際に、pandasに足りない列をNaNで埋めさせる方法はないでしょうか?

どのように解決するのですか?

少なくとも 0.10.1 と 0.11.0.dev-fc8de6d では)うまくいきそうな方法がひとつあります。

>>> !cat ragged.csv
1,2,3
1,2,3,4
1,2,3,4,5
1,2
1,2,3,4
>>> my_cols = ["A", "B", "C", "D", "E"]
>>> pd.read_csv("ragged.csv", names=my_cols, engine='python')
   A  B   C   D   E
0  1  2   3 NaN NaN
1  1  2   3   4 NaN
2  1  2   3   4   5
3  1  2 NaN NaN NaN
4  1  2   3   4 NaN

この方法は、必要なカラムに名前を付ける必要があることに注意してください。 他の方法ほど一般的ではありませんが、それが適用されるときには十分にうまく機能します。