[英]Extract first sequence of strings in pandas column
我在 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])
我猜 columnA 中的项目是字符串,例如“ab、bce、bc”,所以只需使用 split;)。
df.loc[:, 'ColumnB'] = df.ColumnA.map(lambda x: x.split(',')[0])
您也可以尝试使用矢量化 str 方法 split 并在列表中使用 integer 索引来获取第一个元素:
df['Column B'] = df['Column A'].str.split(',').str[0]
应该给
Column A Column B
ab, bce, bc ab
bc, abcd, ab bc
ab, cd, abc ab
你很接近,你只需要在 map 之前将字符串转换为带有pandas.Series.split
的列表:
df["Column B"]= df["Column A"].str.split(",").map(lambda x: x[0])
您还可以使用pandas.Series.get
:
df["Column B"]= df["Column A"].str.split(",").str.get(0)
另一种选择是列表理解:
df["Column B"]= [el[0] for el in df["Column A"].str.split(",")]
print(df)
Column A Column B
0 ab, bce, bc ab
1 bc, abcd, ab bc
2 ab, cd, abc ab
因此,该行被视为字符串,您将获得字符串“ab、bce、bc”的第一个索引。
您需要将其转换为列表,然后获取第一个现在为“ab”的元素。
df.loc[:, 'ColumnB'] = df.ColumnA.map(lambda x: x.split(",")[0])
这会根据需要创建“ColumnB”。
希望能帮助到你!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.