gpt4 book ai didi

python - 计算 Python 中数据帧中最常出现的特定于行的组合

转载 作者:行者123 更新时间:2023-12-04 03:39:05 24 4
gpt4 key购买 nike

我有一个包含用逗号分隔的文本的数据框

1  a,b,c,d
2 a,b,e,f
3 a,b,e,f
我正在尝试输出打印 2 个字母的前 2 个最常见组合 + 整个数据帧中出现的次数。因此,基于上述数据帧,输出将是
(a,b,3) (e,f,2)
a 和 b 的组合出现 3 次,e 和 f 的组合出现 2 次。 (是的,有更多的组合出现了 2 次,但我们可以在这里将其切断以保持简单)我真的很困惑如何开始这个。我正在考虑遍历每一行并以某种方式存储所有组合,最后我们可以打印出前 n 个组合以及它们在数据框中出现的次数。
根据我的想法,以下是到目前为止我所拥有的。
import pandas as pd   
from io import StringIO

StringData = StringIO("""Date
a,b,c,d
a,b,e,f
a,b,e,f
""")

df = pd.read_csv(StringData, sep =";")

for index, row in df.iterrows():
(somehow get and store all possible 2 word combos?)

最佳答案

你可以这样做:

import numpy as np
import pandas as pd
from io import StringIO

StringData = StringIO("""Date
a,b,c,d
a,b,e,f
a,b,e,f
""")

df = pd.read_csv(StringData, sep =";")
df['Date'] = df['Date'].apply(lambda x: x.split(','))
df['combinations'] = df['Date'].apply(lambda x: [(x[i], x[i+1]) for i in range(len(x)-1)])
df = df.explode('combinations')
df = df.groupby('combinations').agg('count').reset_index()
df.sort_values('Date', inplace=True, ascending=False)
df['combinations'] = df.values.tolist()
df.drop('Date', axis=1, inplace=True)
df['combinations'] = df['combinations'].apply(np.hstack)

print(df.iloc[:2, :])
输出:
  combinations
0 [a, b, 3]
2 [b, e, 2]

关于python - 计算 Python 中数据帧中最常出现的特定于行的组合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66379172/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com