我有一个数据框,想将第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放置在每行中。
答案 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会有所帮助。