我在DF中有一列,如下所示
| Column A |
| ab, bce, bc |
| bc, abcd, ab |
| ab, cd, abc |
我想创建一个只接受第一个序列的新列,如下所示
| Column A | Column B |
| ab, bce, bc | ab |
| bc, abcd, ab | bc |
| ab, cd, abc | ab |
我试着用这个代码,但它只给了我第一个序列的第一个字母,而不是整个缩写
df.loc[:, 'ColumnB'] = df.ColumnA.map(lambda x: x[0])
5条答案
按热度按时间mbzjlibv1#
我猜columnA中的项是字符串,例如'ab,bce,bc',所以只需使用split ;).
yzuktlbb2#
你也可以尝试向量化str方法split,并在列表上使用整数索引来获取第一个元素:
应给予
ryhaxcpt3#
已经很接近了,只需要将字符串转换为列表,并在map前加上
pandas.Series.split
:您也可以使用
pandas.Series.get
:另一个选项是列表理解:
#输出:
dphi5xsq4#
因此,该行被视为string,您将获得字符串"ab,bce,bc"的第一个索引。
你需要把它转换成一个list,然后取第一个元素,现在是"ab"。
这将根据需要创建"ColumnB"。
希望能有所帮助!
bvk5enib5#
如果你想要第一个块,不要使用
split
,而要使用extract
开头的非,
字符,这样会更有效率:输出量: