根据行值从pandas数据框中获取列表

时间:2017-08-21 15:02:28

标签: python-3.x pandas dataframe

我正在尝试从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时,它会为你提供索引,但我希望得到报告值。

1 个答案:

答案 0 :(得分:1)

groupby上{p> nameapply上的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]}