如何解析Python Pandas String中的一个字符?

时间:2018-10-05 13:41:36

标签: python-3.x pandas

我有一个数据框,想将第9个字符解析为第二列。我虽然在某处缺少语法。

#develop the data
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']

def check_digit(df):
    df['check_digit'] = df['vin'][8]
    print(df['checkdigit'])]

由于某种原因,这会将第8行VIN放置在每行中。

2 个答案:

答案 0 :(得分:0)

正确的方法是:

def check_digit(df):
   df['check_digit'] = df['vin'].str[8]
   print(df)

答案 1 :(得分:0)

在您的代码中执行以下操作:

df['check_digit'] = df['vin'][8]

仅选择“ vin”列中的第8个元素。尝试以下方法:

for i in range(len(df['vin'])):
    df['check_digit'] = df['vin'][i][8]

根据经验,只要遇到困难,只需检查返回的变量的类型。它解决了许多小问题。

编辑:正如@Georgy在评论中所指出的那样,使用循环不是pythonic,更有效的解决方法是:

df['check_digit'] = df['vin'].str[8]

.str可以解决问题。为将来参考,我想您会发现this会有所帮助。