[英]python Find Count frequency of Sublist in given dataframe and find the associate value
假设我有一个数据框 A。
ID action
1 A
2 B
3 C
4 D
5 E
6 A
7 B
8 C
...
我想从数据框 A 中找到以下模式:
[A,B,C]
我想计算子列表的频率并找到每个元素的ID:
output,这只是一种输出的想法,输出可以是dict或者list,我不确定哪种类型更好。
the frequency is 2:
[A:1,B:2,C:3]
[A:6, B:7,C:8]
mask = (df.action.shift(1, fill_value='')
.add(df.action)
.add(df.action.shift(-1, fill_value=''))
.eq('ABC'))
output = df.loc[mask, 'ID'].apply(lambda x: f'[A:{x-1},B:{x}:C:{x+1}]')
print(f'The frequency is {len(output)}:')
for x in output:
print(x)
输出:
The frequency is 2:
[A:1,B:2:C:3]
[A:6,B:7:C:8]
根据您想从数据框中找到匹配模式的问题
假设这是您的模式pattern = ['A', 'B', 'C']
如果模式列表中存在action列下的值,则查找行
new_df = df[df.action.isin(pattern)]
print(new_df)
输出:
ID action
0 1 A
1 2 B
2 3 C
5 6 A
6 7 B
7 8 C
然后,将数据帧转换为元组
id = list(new_df.ID)
action = list(new_df.action)
[(a, b) for (a, b) in zip(id, action)]
你会得到一个配对项目的列表作为一个元组
[(1, 'A'), (2, 'B'), (3, 'C'), (6, 'A'), (7, 'B'), (8, 'C')]
注意:如果你修改你的输出,我也可以修改我的解决方案
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.