gpt4 book ai didi

python - 通过使用值计数拆分来比较 pandas 字符串

转载 作者:太空宇宙 更新时间:2023-11-03 15:12:10 24 4
gpt4 key购买 nike

我是使用 pandas 的新手,我正在尝试创建一种方法来匹配 pandas 中具有较低 value_counts 的字符串,然后更改它们以匹配具有较高值计数的相似字符串。我尝试过拆分字符串,但我无法弄清楚下一部分。我想要做的是检查数组中是否存在长度超过 2 个字符的分割字符串,并且具有较高的值计数,然后取最高值计数匹配,以便该列的所有匹配字符串都相同。大约有 18 个不同的值计数,我的目标是使其达到最低数字,大约为 10 或 11。它来自较大的数据帧,并且有很多类似的组可以重复此操作。这就是我到目前为止所做的。

vc = data['event_name'].value_counts()
str_arr = []
for v in vc[vc < 10].index:
str_arr.append(v.split())

然后我可以手动检查字符串:

data[data['event_name'].str.contains(str1, str2)]

我不确定如何使用循环在数据帧中进行匹配和更新,并确保低 value_count 字符串不包含在要匹配的字符串中。

最佳答案

如果你开始

vc = data.merge(data['event_name'].value_counts().reset_index(),
left_on='event_name', right_on='index', how='left')

获取与初始数据帧的每一行关联的 value_counts,并将您的设置步骤替换为*

vc['long words'] = vc['event_name'].str.replace('\s\S\S?\s|\A\S\S?\s|\s\S\S?\z',
' ').str.strip()

创建一个仅包含较长单词的字段,然后您可以跟进

vc_max = vc.sort_values('event_name_y', ascending=False).drop_duplicates('long words')

识别每组匹配的较长单词的最常见值,并使用

vc.merge(vc_max, on='long words', how='left')

将它们与每一行匹配,由于索引保持不变,因此可以分配给每一行

data['event_name'] = vc.merge(vc_max, on='long words', how='left')['event_name_x_y']
<小时/>

*如果你想坚持使用列表/不喜欢正则表达式,下面的也可以

    vc['long words'] = [' '.join([string for string in split if len(string) > 2])
for split in vc['event_name'].str.split().tolist()]

关于python - 通过使用值计数拆分来比较 pandas 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44138197/

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