我有一个带有这样的列的数据框:
column_1
0 0.25 / 0 / 0.25 / -0.25
1 -0.25 / 0 /1
2 0 / -0.5 / -0.25
3 1/ 0.25 / -0.75
每行由连续的数字链组成(用/分隔) 我想创建2个新列,并仅保留第一个元素和最后一个元素,例如下面的示例
column_1 new_column_1st_element new_column_last_element
0 0.25 / 0 / 0.25 / -0.25 0.25 -0.25
1 -0.25 / 0 /1 -0.25 1
2 0 / -0.5 / -0.25 0 -0.25
3 1/ 0.25 / -0.75 1 -0.75
答案 0 :(得分:1)
假设column_1
具有字符串数据类型的数据
df['new_column_1st_element'] = df.apply(lambda row: row['column_1'].split('/')[0], axis = 1)
类似地,可以对new_column_last_element
答案 1 :(得分:1)
使用Series.str.extract
以及给定的正则表达式模式:
df[['first', 'last']] = df['column_1'].str.extract(r'([^/]+).*?([^/]+)$')
结果:
# print(df)
column_1 first last
0 0.25 / 0 / 0.25 / -0.25 0.25 -0.25
1 -0.25 / 0 /1 -0.25 1
2 0 / -0.5 / -0.25 0 -0.25
3 1/ 0.25 / -0.75 1 -0.75
您可以测试regex
模式here
。
答案 2 :(得分:1)
您在这里:
df['new_column_1st_element'] = df.column_1.str.split('/').str[0]
df['new_column_last_element'] = df.column_1.str.split('/').str[-1]
输出
column_1 new_column_1st_element new_column_last_element
0 0.25 / 0 / 0.25 / -0.25 0.25 -0.25
1 -0.25 / 0 /1 -0.25 1
2 0 / -0.5 / -0.25 0 -0.25
3 1/ 0.25 / -0.75 1 -0.75