gpt4 book ai didi

python - 获取 pandas 中包含字符串的列数

转载 作者:行者123 更新时间:2023-12-01 02:23:40 27 4
gpt4 key购买 nike

我有两个数据帧 df1 和 df2。

df1:

PartNumber
0000D3447E
0000D3447E
0000D3447E12
0000D3447E
0000D3447E
0000D3447E
0000D3447E2345
0000F2892E
0000F2892E
0000F2892E
0000F2892E34
0000F2892E
0000F2892E
0000F2892E12

df2:

PartNumber
0000D3447E39S
0000D3447E39S
0000D3447E39S
0000D3447E39S
0000D3447E39S
0000D3447E39S
0000D3447E39S2245
0000F2892EDI1
0000F2892EDI1
0000F2892EDI1
0000F2892EDI124
0000F2892EDI1
0000F2892EDI1
0000F2892EDI1
0000D1617EAD6
0000D1617EAD6
0000D1617EAD6137
0000D1617EAD6
0000D1617EAD6
0000D1617EAD612
0000D1617EAD6
0000D3447EYG1
0000D3447EYG1
0000D3447EYG1
0000D3447EYG1
0000D3447EYG1
0000D3447EYG1
0000D3447EYG1

我需要从 df1 中获取“0000D3447E”并获取包含此字符串的 df2 的列计数,并通过创建新列来更新 df1 中的计数。

给出的答案 df1['count_of_colors'] = df1['PartNumber'].map(df2['PartNumber'].str[:10].value_counts())
可以解决问题,但字符串不是恒定的 10 个字符。因此,我得到的字符串计数错误,因为字符串被限制为 str[:10] 个字符。

谢谢。

最佳答案

您可以使用 map

df1['count_of_colors'] = df1['PartNumber'].map(df2['PartNumber'].str[:10].value_counts())

df1:

    PartNumber  count_of_colors
0 0000D3447E 14
1 0000D3447E 14
2 0000D3447E 14
3 0000D3447E 14
4 0000D3447E 14
5 0000D3447E 14
6 0000D3447E 14
7 0000F2892E 7
8 0000F2892E 7
9 0000F2892E 7
10 0000F2892E 7
11 0000F2892E 7
12 0000F2892E 7
13 0000F2892E 7

编辑:使用 str.extract 提取 df2 中的精确匹配,然后使用相同的解决方案

pat = '({})'.format('|'.join(df1['PartNumber'].unique()))

df2['PartMatch'] = df2['PartNumber'].str.extract(pat, expand = False)

df1['count_of_colors'] = df1['PartNumber'].map(df2['PartMatch'].value_counts())

您会得到相同的输出,并且它没有针对字符数进行硬编码

关于python - 获取 pandas 中包含字符串的列数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47661443/

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