按列分组的问题(每次不同的行数)

时间:2018-06-07 11:05:39

标签: python pandas pandas-groupby

我有一个数据框,用于存储分布在200,000行以上的大约30.000个文档的信息。那是因为一个文件可以有多个主题词。因此,除了“SubjectTerm”列之外,讨论同一文档的行是相同的。

我的目标:一个数据框,其中一行代表一个文档,其中包含列表中的所有主题词。由于同一文档的所有列都相同,我使用group by。我按不同的列对行进行了分组。但是,每次我获得不同的行数。那是我到目前为止所尝试的。知道我做错了吗?

SubjectTerms_Kreuztabelle = EBSCOhost_unselektiert.copy(deep=True)
SubjectTerms_Kreuztabelle.dropna(subset=["SubjectTerm"], inplace = True)

SubjectTerms_Kreuztabelle2 = SubjectTerms_Kreuztabelle.groupby(["Jahr", "Titel"])["SubjectTerm"].apply(list).reset_index()  #29.338 rows

SubjectTerms_Kreuztabelle4 = SubjectTerms_Kreuztabelle.groupby(["Jahr", "Datum", "Medium-Typ", "Titel"])["SubjectTerm"].apply(list).reset_index() #29.606 rows

1 个答案:

答案 0 :(得分:0)

你必须有一些偷偷摸摸的空白,所以这可能会有所帮助:

import pandas as pd

df = pd.DataFrame({'A': ['a', 'b', '  a  '],
                   'B': [1, 2, 3]})

print(df.groupby('A')['B'].sum())

#A
#  a      3
#a        1
#b        2
#Name: B, dtype: int64

df_obj = df.select_dtypes(['object'])

df[df_obj.columns] = df_obj.apply(lambda x: x.str.strip())

print(df.groupby('A')['B'].sum())

#A
#a    4
#b    2
#Name: B, dtype: int64