Pandas 从“熊猫”列创建日期相似的列表

Pandas 从“熊猫”列创建日期相似的列表,pandas,list,dataframe,Pandas,List,Dataframe,我有一个包含日期和类别的熊猫数据框。对于相同的日期,可能有多个类别。示例df: +------------+----------+ | Date | Category | +------------+----------+ | 2020-01-02 | A | | 2020-01-02 | B | | 2020-01-02 | C | | 2020-01-02 | D | | 2020-02-20 | E | |

我有一个包含日期和类别的熊猫数据框。对于相同的日期,可能有多个类别。示例df:

+------------+----------+
|    Date    | Category |
+------------+----------+
| 2020-01-02 | A        |
| 2020-01-02 | B        |
| 2020-01-02 | C        |
| 2020-01-02 | D        |
| 2020-02-20 | E        |
| 2020-02-20 | F        |
| 2020-02-20 | G        |
+------------+----------+
我想创建一个函数来提供一个输出列表,一个用于日期,另一个用于类别

所需输出:

date_list = [['2020-01-02'], ['2020-02-20']]
category_list = [['A', 'B', 'C', 'D',], ['E','F','G']]
请注意,可以有两个以上不同的日期,然后输出将相应地更改

获得这样一个输出的目的是,我必须将列表传递给一个API,该API将为我提供价格 每个类别。我可以简单地创建一个列表

date_list = df.Date.tolist()

传递这样的列表将对API进行多次调用,并且需要很长时间。如果在同一天有相似的类别,那么我会传递一个单一日期列表和该日期的类别列表。看起来像

zipped = zip(category_list, date_list)
for i, j in zip:
    result = get_data(i, j)

首先按和创建每个组的列表:

如果需要传递到功能,则可以通过以下方式循环:

zipped = zip(category_list, date_list)
for i, j in zip:
    result = get_data(i, j)
s = df.groupby('Date')['Category'].agg(list)
print (s)
Date
2020-01-02    [A, B, C, D]
2020-02-20       [E, F, G]
Name: Category, dtype: object

#for one element lists use lsit comprehension
date_list = [[x] for x in s.index]
category_list = s.tolist()

print (date_list)
[['2020-01-02'], ['2020-02-20']]
print (category_list)
[['A', 'B', 'C', 'D'], ['E', 'F', 'G']]
s = df.groupby('Date')['Category'].agg(list)

for i, j in s.items():
    print ([i], j)
['2020-01-02'] ['A', 'B', 'C', 'D']
['2020-02-20'] ['E', 'F', 'G']