Python 如果前4个坑等于X或Y,则删除最后2个坑

Python 如果前4个坑等于X或Y,则删除最后2个坑,python,Python,我有一个字符串格式的csv字段列,每个元素中有4到6位数字。如果前4位等于[3372]或[2277],我想删除元素的最后2位,以便只剩下3372或2277。我不想改变其他元素 我猜一些循环,如果语句和映射可能 我该怎么办(请友善些。通过降低人们的帖子等级,你会让人们不愿意学习。如果你想提供帮助,请花时间阅读帖子,这并不难理解。)因为你的值仍然是字符串,我会使用切片来查看前4个字符。如果他们匹配,我们就把绳子的一端砍掉。否则,我们将返回不变的值 下面是一个函数,它可以实现您想要的功能: def固定

我有一个字符串格式的csv字段列,每个元素中有4到6位数字。如果前4位等于[3372]或[2277],我想删除元素的最后2位,以便只剩下3372或2277。我不想改变其他元素

我猜一些循环,如果语句和映射可能


我该怎么办(请友善些。通过降低人们的帖子等级,你会让人们不愿意学习。如果你想提供帮助,请花时间阅读帖子,这并不难理解。)

因为你的值仍然是字符串,我会使用切片来查看前4个字符。如果他们匹配,我们就把绳子的一端砍掉。否则,我们将返回不变的值

下面是一个函数,它可以实现您想要的功能:

def固定数字(val):
如果('3372','2277')中的val[:4]:
返回值[:4]
返回值
#在这里,您需要实际的代码来读取CSV文件
对于csv_文件中的行:
#假设您的值在第6列中
第[5]行=固定数字(第[5]行)

由于您的值仍然是字符串,因此我将使用切片来查看前4个字符。如果他们匹配,我们就把绳子的一端砍掉。否则,我们将返回不变的值

下面是一个函数,它可以实现您想要的功能:

def固定数字(val):
如果('3372','2277')中的val[:4]:
返回值[:4]
返回值
#在这里,您需要实际的代码来读取CSV文件
对于csv_文件中的行:
#假设您的值在第6列中
第[5]行=固定数字(第[5]行)

而不是使用循环,如果您的csv文件很大,我建议您使用熊猫数据帧:

将熊猫作为pd导入
#读取文件时,csv将以数据帧格式(即矩阵)读取
df=pd.read\u csv('your\u file.csv')
#定义要应用于数据帧中每个元素的函数:
def更新_df(x):
如果x.startswith('3372'):
返回'3372'
elif x.startswith('2277'):
返回'2277'
其他:
返回x
#使用applymap,它将函数应用于数据帧的每个元素,并在df1中收集结果:
df1=df.applymap(更新df)
打印(df1)

相反,如果您的数据集很小,您可以使用循环,如上所述。

而不是使用循环,如果您的csv文件很大,我建议您使用熊猫数据帧:

将熊猫作为pd导入
#读取文件时,csv将以数据帧格式(即矩阵)读取
df=pd.read\u csv('your\u file.csv')
#定义要应用于数据帧中每个元素的函数:
def更新_df(x):
如果x.startswith('3372'):
返回'3372'
elif x.startswith('2277'):
返回'2277'
其他:
返回x
#使用applymap,它将函数应用于数据帧的每个元素,并在df1中收集结果:
df1=df.applymap(更新df)
打印(df1)

相反,如果你有一个小数据集,你可以使用循环,如上所述。

Hi@Alice。请添加一个描述性示例。你给出的例子不够清楚。你试过你的猜测吗?@alitu只是在草图上/心里,但如果不创建新的列表,我看不出它们是如何工作的,这听起来相当复杂。必须有一个更简单的方法。我读你的问题的方式我看到了3个单独的问题:1)如何循环一个csv文件;2) 如何识别数字模式;3) 如何替换这些值。请用Hi@Alice将你的问题集中在一个特定的问题上。请添加一个描述性示例。你给出的例子不够清楚。你试过你的猜测吗?@alitu只是在草图上/心里,但如果不创建新的列表,我看不出它们是如何工作的,这听起来相当复杂。必须有一个更简单的方法。我读你的问题的方式我看到了3个单独的问题:1)如何循环一个csv文件;2) 如何识别数字模式;3) 如何替换这些值。请把你的问题集中在一个特定的问题上,谢谢,我会试一试并汇报:)谢谢,我会试一试并汇报:)你是对的,我用的是熊猫(也许应该提到这一点),只是要注意,我用的是.map()而不是.applymap(),因为我有很多其他专栏都会抛出错误。谢谢大家!<代码>映射适用于系列,不适用于数据帧。如果您有数据帧(矩阵)而不是序列(向量),则应使用
applymap
。你犯了什么错误?与缺少值或NaN相关的错误?你是对的,我使用的是pandas(也许应该提到),只是要注意,我使用的是.map()而不是.applymap(),因为我有许多其他列抛出错误。谢谢大家!<代码>映射适用于系列,不适用于数据帧。如果您有数据帧(矩阵)而不是序列(向量),则应使用
applymap
。你犯了什么错误?与缺失值或NaN相关的错误?