Skip to main content
 首页 » 编程设计

python之循环并制作新列python

2025年05月04日22开发

我有这个循环

Source= [] 
for row in df['Num_Col']: 
    if row[0:6].isdigit()==True and row[6:8].isalpha()==True: 
        Source.append('Num') 
        df['Source'] = Source 

我想要实现的是,当我遍历指定的列时,我希望它查看前 6 个位置(如果它们是数字),如果最后两个数字是 alpha,那么我希望它将它附加到我的源列表中,并且然后我想创建一个新的 col 命名为:

df['Source'] = Source 

这将是满足我的 if 语句要求的任何内容。虽然我一直收到这个错误

ValueError: Length of values does not match length of index 

如果这个新列中的其余列是 Nan 我没问题,我只是希望它使用 if 语句指定的参数来创建列。我只是不明白为什么它还没有这样做。

     Num_col   Country  
  1  123456HK  Georgia    
  2  273HH123  Georgia 
  3  123456HK  Georgia 
  4  273HH123  Georgia 
  5  123456HK  Georgia 

所以当我运行那个循环时,我希望它返回的是这个

     Num_col   Country   Source 
  1  123456HK  Georgia   Num 
  2  273HH123  Georgia    
  3  123456HK  Georgia   Num 
  4  273HH123  Georgia    
  5  123456HK  Georgia   Num 

所以基本上只需添加一个名为 source 的列,然后仅添加与 if 语句匹配的列中指定名称为 Num 的值,该名称在 if 语句之后指定。

请您参考如下方法:

您可以使用 apply 函数遍历 Num_col 列的所有行并应用一个函数。在这种情况下,该函数会检查您指定的条件,并根据条件是否满足返回不同的值。

import numpy as np # for the np.NaN value 
df['Source'] = df['Num_col'].apply(lambda nc: 'Num' if nc[0:6].isdigit() and nc[6:8].isalpha() else np.NaN) 
 
# Output: 
   Country   Num_col Source 
0  Georgia  123456HK    Num 
1  Georgia  273HH123    NaN 
2  Georgia  123456HK    Num 
3  Georgia  273HH123    NaN 
4  Georgia  123456HK    Num