基于一个列元素在熊猫上创建新列

时间:2020-07-04 08:27:14

标签: python pandas dataframe

我有一个带有这样的列的数据框:

    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

3 个答案:

答案 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