我有一个数据框,用于存储分布在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
答案 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