Python 获取数据帧中列的每个元素的第一个字符

Python 获取数据帧中列的每个元素的第一个字符,python,pandas,indexing,dataframe,Python,Pandas,Indexing,Dataframe,我有一个叫做df的数据帧。它有一个名为“Spec Type”的列。使用熊猫 df['Spec Type'] 0 NaN 1 A1 2 G7V 3 F7+K4 . . . . 169 A0e 我只想为每个条目获取第一个字符,并将其作为名为“Spec Type Index”的df的新列。但是,以下代码给出了一个错误: df['Spec Type Index'] = [i[0] for i i

我有一个叫做df的数据帧。它有一个名为“Spec Type”的列。使用熊猫

df['Spec Type']

0         NaN
1          A1
2         G7V
3       F7+K4
.         .
.         .
169       A0e
我只想为每个条目获取第一个字符,并将其作为名为“Spec Type Index”的df的新列。但是,以下代码给出了一个错误:

df['Spec Type Index'] = [i[0] for i in df['Spec Type']]
“float”对象不可下标

错误在i[0]部分。我使用它来获取索引元素的第一个字符。我该怎么办

df.loc[df['Spec Type'].notnull(), 'Spec Type Index'] = df['Spec Type'].str[0]
如果可以的话,问题是
NaN
是一个浮点数据类型,所以不能使用str方法,像上面这样的掩蔽可以避免这种情况

In [48]:
df.loc[df['Spec Type'].notnull(), 'Spec Type Index'] = df['Spec Type'].str[0]
df

Out[48]:
      Spec Type Spec Type Index
index                          
0           NaN             NaN
1            A1               A
2           G7V               G
3         F7+K4               F

谢谢但这给了我一个规格类型的精确副本,而不仅仅是每个元素的第一个字符,比如“A1”元素的“A”。你试过我更新的答案了吗?我的输出是否与你的匹配?