将pandas数据帧按列值分组转换为Huggingface Dataset的方法是什么?

huangapple go评论80阅读模式
英文:

How to convert pandas data frame to Huggingface Dataset grouped by column value?

问题

以下是您要翻译的内容:

我有以下数据框`df`

    import pandas as pd
    from datasets import Dataset

    data = [[1, 'Jack', 'A'], [1, 'Jamie', 'A'], [1, 'Mo', 'B'], [1, 'Tammy', 'A'], [2, 'JJ', 'A'], [2, 'Perry', 'C']]
    df = pd.DataFrame(data, columns=['id', 'name', 'class'])
    > df
      id   name class
    0   1   Jack     A
    1   1  Jamie     A
    2   1     Mo     B
    3   1  Tammy     A
    4   2     JJ     A
    5   2  Perry     C

我想将其转换为一个Dataset对象每个`id`一个行期望的输出是

    > myDataset
    Dataset({
        features: ['id', 'name', 'class'],
        num_rows: 2
    })

其中

    > myDataset[0:2]
    {'id': ['1', '2'], 'name': [['Jack', 'Jamie', 'Mo', 'Tammy'], ['JJ', 'Perry']], 'class': [['A', 'A', 'B', 'A'], ['A', 'C']]}

根据文档[这里][1]我尝试了以下方法但这给了我一个包含6行的Dataset而不是按`id`列分组的一个包含2行的Dataset

    myDataset = Dataset.from_pandas(df) 
    > myDataset
    Dataset({
        features: ['id', 'name', 'class'],
        num_rows: 6
    })
    > myDataset[0:2]
    {'id': [1, 1], 'name': ['Jack', 'Jamie'], 'class': ['A', 'A']}

请注意,代码部分不包括在翻译中。

英文:

I have the following data frame df

import pandas as pd
from datasets import Dataset

data = [[1, 'Jack', 'A'], [1, 'Jamie', 'A'], [1, 'Mo', 'B'], [1, 'Tammy', 'A'], [2, 'JJ', 'A'], [2, 'Perry', 'C']]
df = pd.DataFrame(data, columns=['id', 'name', 'class'])
> df
  id   name class
0   1   Jack     A
1   1  Jamie     A
2   1     Mo     B
3   1  Tammy     A
4   2     JJ     A
5   2  Perry     C

I would like to covert it to a Dataset object that has 2 rows, one per id. The desired output is

> myDataset
Dataset({
    features: ['id', 'name', 'class'],
    num_rows: 2
})

where

> myDataset[0:2]
{'id': ['1', '2'], 'name': [['Jack', 'Jamie', 'Mo', 'Tammy'],['JJ', 'Perry']], 'class': [['A', 'A', 'B', 'A'], ['A', 'C']]}

Based on the documentation here, I tried the following but that gave me a Dataset with 6 rows, instead of one with 2 rows and grouped by the column id

myDataset = Dataset.from_pandas(df) 
> myDataset
Dataset({
    features: ['id', 'name', 'class'],
    num_rows: 6
})
> myDataste[0:2]
{'id': [1, 1], 'name': ['Jack', 'Jamie'], 'class': ['A', 'A']}

答案1

得分: 0

myDataset = Dataset.from_pandas(df.groupby('id', as_index=False).agg(list))
英文:

You can try to aggregate the original dataframe by id

myDataset = Dataset.from_pandas(df.groupby('id', as_index=False).agg(list))

huangapple
  • 本文由 发表于 2023年5月7日 14:17:41
  • 转载请务必保留本文链接:https://go.coder-hub.com/76192459.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定