我有这个循环
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
