次のようなExcelシートがあります。
Column1 Column2 Column3
0 23 1
1 5 2
1 2 3
1 19 5
2 56 1
2 22 2
3 2 4
3 14 5
4 59 1
5 44 1
5 1 2
5 87 3
そして、そのデータを抽出し、列1でグループ化して、次のようにディクショナリに追加します。
{0: [1],
1: [2,3,5],
2: [1,2],
3: [4,5],
4: [1],
5: [1,2,3]}
これはこれまでのところ私のコードです
Excel = pandas.read_Excel(r"e:\test_data.xlsx", sheetname='mySheet', parse_cols'A,C')
myTable = Excel.groupby("Column1").groups
print myTable
ただし、私の出力は次のようになります。
{0: [0L], 1: [1L, 2L, 3L], 2: [4L, 5L], 3: [6L, 7L], 4: [8L], 5: [9L, 10L, 11L]}
ありがとう!
_Column1
_でgroupby
を実行し、次に_Column3
_をapply(list)
に渡して_to_dict
_を呼び出すことができますか?
_In [81]: df.groupby('Column1')['Column3'].apply(list).to_dict()
Out[81]: {0: [1], 1: [2, 3, 5], 2: [1, 2], 3: [4, 5], 4: [1], 5: [1, 2, 3]}
_
または、
_In [433]: {k: list(v) for k, v in df.groupby('Column1')['Column3']}
Out[433]: {0: [1], 1: [2, 3, 5], 2: [1, 2], 3: [4, 5], 4: [1], 5: [1, 2, 3]}
_
ドキュメント によると、GroupBy.groups
:
キーは計算された一意のグループであり、対応する値は各グループに属する軸ラベルである辞書です。
値自体が必要な場合は、 groupby
'Column1'を呼び出して apply
を呼び出し、list
を渡すことができます。各グループに適用する方法。
次に、必要に応じてそれを辞書に変換できます。
In [5]:
dict(df.groupby('Column1')['Column3'].apply(list))
Out[5]:
{0: [1], 1: [2, 3, 5], 2: [1, 2], 3: [4, 5], 4: [1], 5: [1, 2, 3]}
(注: this SO question に数字の後にL
)が続く理由をご覧ください)