我有一个包含大约100万行和4列的大文件。我要分析的列是A和C. A列中的名称重复多次,但每次都与C列中的唯一名称匹配。我在C列中寻找4个特定名称,我希望他们的列A中的对应名称 我希望列A中的所有名称都包含C列中4个名称的任意组合,并且还要计算它们中每个组合的数量。 我知道这是一个令人困惑的例子:
原始档案: 我在C栏中寻找TI,NB,CC和LR,在A栏中找到它们的对应名称。
A B C D
GB1 TI
GB2 NB
GB3 VH
GB1 NB
GB2 CC
GB6 TI
GB1 LR
GB1 CC
GB8 JK
GB9 TI
我想要的结果:
Name: Name from column C:
GB1 TI, NB,LR,CC
GB2 NB,CC
GB6 TI
GB9 TI
此外,我想知道每种组合中有多少种:(约20种可能的组合)
Combination: Number:
TI,NB,LR,CC 1
NB,CC 1
TI 2
谢谢,
答案 0 :(得分:1)
要查找所有组合,您可以按A
对数据框进行分组,并在对项目进行排序后加入列C
中的所有项目(用于组合目的计数);要了解有多少种组合,您可以执行 value_counts():
items = ["TI", "NB", "CC", "LR"]
# use isin method to filter the data frame so that the results only contain interested items
# ignore the sort_values here if the order of the combination matters here
df1 = df[df.C.isin(items)].groupby("A").C.apply(lambda g: ','.join(g.sort_values()))
df1
#A
#GB1 CC,LR,NB,TI
#GB2 CC,NB
#GB6 TI
#GB9 TI
#Name: C, dtype: object
df1.value_counts()
#TI 2
#CC,LR,NB,TI 1
#CC,NB 1
#Name: C, dtype: int64