英文:
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))
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论