Year-Week Job_list Comments_2
2019-01 Doc-1 Doc-1
2019-01 Doc-2 Doc-2
2019-01 Doc-3 Doc-3
2019-02 Doc-4 Doc-4
2019-03 Doc-5 Doc-5我想要每一栏的输出分别按年-周后,应用包字模型。
发布于 2020-01-29 08:27:07
您可以使用.groupby按年周对输出进行分组。
之后,可以使用.apply(list)将分组输出转换为列表。
df = pd.DataFrame([['2019-01', 'Doc-1', 'Doc-1'], ['2019-01', 'Doc-2', 'Doc-2'],['2019-01','Doc-3','Doc-3'],['2019-02','Doc-4','Doc-4'],['2019-03','Doc-5','Doc-5']],columns= ['Year-Week', 'Job_list', 'Comments_2'])
#Use groupby and then .apply(list)
job_list_grouped = df.groupby('Year-Week')['Job_list'].apply(list)
print(job_list_grouped)输出结果如下:
Year-Week
2019-01 [Doc-1, Doc-2, Doc-3]
2019-02 [Doc-4]
2019-03 [Doc-5]您可以简单地对另一列执行同样的操作。从那里你可以用它把它转换成任何你需要的东西。
编辑:
为此,您可以使用库collections中的模块collections!
这是我的新代码:
import pandas as pd
from collections import Counter
df = pd.DataFrame([['2019-01', 'Doc-1', 'Doc-1'], ['2019-01', 'Doc-2', 'Doc-2'],['2019-01','Doc-3','Doc-3'],['2019-02','Doc-4','Doc-4'],['2019-03','Doc-5','Doc-5']],columns= ['Year-Week', 'Job_list', 'Comments_2'])
job_list_grouped = df.groupby('Year-Week')['Job_list'].apply(list).apply(Counter)
print(job_list_grouped)
print(job_list_grouped.to_dict())请注意,我只是将另一个apply添加到groupby函数的末尾。
第一张印出来:
Year-Week
2019-01 {'Doc-1': 1, 'Doc-2': 1, 'Doc-3': 1}
2019-02 {'Doc-4': 1}
2019-03 {'Doc-5': 1}如果需要使用字典格式,只需添加to_dict()即可:
{'2019-01': Counter({'Doc-1': 1, 'Doc-2': 1, 'Doc-3': 1}), '2019-02': Counter({'Doc-4': 1}), '2019-03': Counter({'Doc-5': 1})}不要担心字典周围的Counter。它的行为仍然完全像一个dict。
https://stackoverflow.com/questions/59961609
复制相似问题