我有pandas数据框,其中列出了项目并对其进行了分类:
col_name |col_group
-------------------------
id | Metadata
listing_url | Metadata
scrape_id | Metadata
name | Text
summary | Text
space | Text
复制:
import pandas
df = pandas.DataFrame([
['id','metadata'],
['listing_url','metadata'],
['scrape_id','metadata'],
['name','Text'],
['summary','Text'],
['space','Text']],
columns=['col_name', 'col_group'])
您能否建议我如何基于“ col_group”将此数据框转换为多个列表:
Metadata = ['id','listing_url','scraping_id]
Text = ['name','summary','space']
这是为了让我可以将这些列列表传递给panda和drop列。
我在Google上搜索了很多并陷入困境:所有答案都是关于将列表转换为df的,而不是相反。我应该转换成词典还是列表列表?
我有100多行,属于10个类别,因此要避免手动进行硬编码。
my_vars = df.groupby('col_group').agg(list)['col_name'].to_dict()
输出:
>>> my_vars
{'Text': ['name', 'summary', 'space'], 'metadata': ['id', 'listing_url', 'scrape_id']}
推荐的用法是仅my_vars['Text']
访问Text
和等。如果必须使用不同的名称,则可以将其强制应用于目标范围,例如globals
:
globals().update(df.groupby('col_group').agg(list)['col_name'].to_dict())
结果:
>>> Text
['name', 'summary', 'space']
>>> metadata
['id', 'listing_url', 'scrape_id']
但是,我建议您这样做,因为您可能会无意间覆盖了其他一些对象,或者它们可能不在您所需的适当范围内(例如locals
)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句