Python函数读取长度不起作用

标签 python python-3.x pandas function

我正在尝试开发一个函数来检查 VIN 的长度并返回输出。

为了测试,如果长度 = 17,我让它打印出 vin。但是,它清楚地打印出所有内容。不确定我做错了什么。

下面的代码示例。

import pandas as pd

#initialization
df = pd.DataFrame(columns = ["vin"], data = ['LHJLC79U58B001633','SZC84294845693987','LFGTCKPA665700387','L8YTCKPV49Y010001',
                                         'LJ4TCBPV27Y010217','LFGTCKPM481006270','LFGTCKPM581004253','LTBPN8J00DC003107',
                                         '1A9LPEER3FC596536','1A9LREAR5FC596814','1A9LKEER2GC596611','1A9L0EAH9C596099',
                                         '22A000018'])

df['manufacturer'] = ['A','A','A','A','B','B','B','B','B','C','C','D','D']

#develop function
def check_vin(df):
    if len(df['vin'][1]) == 17:
        print(df['vin'])
    else:
        print('nogo')


#test the function
for index, row in df.iterrows():
    check_vin(df)

最佳答案

那是因为您在每次迭代时都要求相同内容的长度 (df['vin'][1])

更改为

for index, row in df.iterrows():
   check_vin(row)

还有

def check_vin(r):
    if len(r.vin) == 17:
        print(r)
    else:
        print('nogo')

输出

LHJLC79U58B001633
SZC84294845693987
LFGTCKPA665700387
L8YTCKPV49Y010001
LJ4TCBPV27Y010217
LFGTCKPM481006270
LFGTCKPM581004253
LTBPN8J00DC003107
1A9LPEER3FC596536
1A9LREAR5FC596814
1A9LKEER2GC596611
nogo
nogo

关于Python函数读取长度不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52665955/

相关文章:

python - 通过列(字符串)中的唯一元素分解 pandas 数据框并创建列联表?

python-3.x - Dataframe 融化并保留索引

python - 使用 subprocess.call 方法

python - 谷歌应用引擎 : how can I programmatically access the properties of my Model class?

python-3.x - pandas to_datetime 无法将非零填充字符串转换为日期时间

python - 如何比较两个具有 NaN 值的 numpy 数组?

python - os.environ.get 返回变量为 'None' ,即使它可以在终端中回显。 (Python) (Mac OS Catalina)

用于屏幕坐标和频率字典的 Python 热图

python-3.x - 当列数未知时,替换 Pandas Dataframe 中特定列中的值

python - Pandas 情节 : Assign Colors