我正在尝试从pandas数据框中获取值列表。
首先进行导入。
import pandas as pd
构建一个pandas数据帧。
# Create dataframe
data = {'name': ['Jason', 'Jason', 'Tina', 'Tina', 'Tina', 'Jason', 'Tina'],
'reports': [4, 24, 31, 2, 3, 5, 10],
'coverage': [True, False, False, False, True, True, False]}
df = pd.DataFrame(data)
print(df)
输出:
coverage name reports
0 True Jason 4
1 False Jason 24
2 False Tina 31
3 False Tina 2
4 True Tina 3
5 True Jason 5
6 False Tina 10
我希望在coverage设置为True时获得报告值,但我希望单独为每个名称设置此值。最好在没有明确的for循环的情况下这样做。
所需的输出是这样的。
list_Jason = [4, 5]
list_Tina = [3]
尝试解决方案:
output3 = df[df.coverage].groupby('name').groups
当你为每个名字分别为coverage时,它会为你提供索引,但我希望得到报告值。
答案 0 :(得分:1)
groupby
上{p> name
和apply
上的list
reports
In [958]: df[df.coverage].groupby('name').reports.apply(list)
Out[958]:
name
Jason [4, 5]
Tina [3]
Name: reports, dtype: object
或,将其存储为dicts
In [959]: df[df.coverage].groupby('name').reports.apply(list).to_dict()
Out[959]: {'Jason': [4, 5], 'Tina': [3]}