gpt4 book ai didi

python - 获取系列中的数组切片

转载 作者:太空宇宙 更新时间:2023-11-04 01:54:27 27 4
gpt4 key购买 nike

我有一个诉讼数据框,其中一列是诉讼编号,我想根据编号过滤值,因为它可以识别它是来自消费者还是来自员工。该号码的常用格式为:0000000-11.2222.3.44.5555,由 25 个字符组成,因此初始过滤是基于此进行的:

df = df[df['lawsuit'].map(str).map(len)==25].reset_index(drop=True)

对于一些来自其他来源的诉讼可能有不同的长度。问题是我需要根据上面格式的个位数做进一步的过滤,可以表示诉讼的性质。我尝试过的方法如下:

for i in range(len(df)):
df['check'] = df['Processo'].str.split('.')[i][-3]

请注意,当用点分隔时,所需的支票编号将始终是倒数第三个,因此索引为 [-3],然后我可以从 check 中选择> 仅列出符合我要求的行。这样做的问题是成本很高,因为我的框架有 4000 多行,而且它一天比一天大。我尝试了经典的过滤方法:

df[df['lawsuit'].str.split('.')[:][-3]=='8']

但是它返回一个键错误。显然,它不会遍历行,从系列内部的数组中获取切片并检查条件。恐怕我对pandas如何对待这种对象还缺乏了解。以下是示例输入和示例输出,过滤掉倒数第三个以点分隔为 4 的诉讼:

         lawsuit                          lawsuit
0000000-11.2222.3.44.5555 0000000-11.2222.3.44.5555
0000001-11.2222.4.44.5555 0000001-11.2222.3.44.5555
0000001-11.2222.3.44.5555 0000002-11.2222.3.44.5555
0000002-11.2222.4.44.5555 0000003-11.2222.3.44.5555
0000002-11.2222.3.44.5555 0000004-11.2222.3.44.5555
. .
. .
. .

最佳答案

split 之后使用 .str 访问器访问列表中的值:

df['lawsuit'].str.split('.').str[-3]

输出:

0    3
1 4
2 3
3 4
4 3
Name: lawsuit, dtype: object

在这种情况下,从 split 创建的列表末尾获取第三个值。等于使用df['lawsuit'].str.split('.').str.get(-3)

https://pandas.pydata.org/pandas-docs/stable/user_guide/text.html#splitting-and-replacing-strings

关于python - 获取系列中的数组切片,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57167665/

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