使用定界符将一列拆分为多列

split one column into multiple columns usining delimiter

我有一个数据框,其中一个字段包含多个由“+”分隔的值。 我想要的是将每个值拆分为一个新列。

import pandas as pd

df = {'ID': [3009, 129, 119, 120, 121],
  'date': ['2016+2017', '2015', '2014+2019+2020', '2020', 'NULL']
  }

df = pd.DataFrame(df)

看起来像这样:

df    

Out[25]: 
      ID       date
0    3009    2016+2017
1     129    2015
2     119    2014+2019+2020
3     120    2020
4     121    NULL

我想用“+”分隔符拆分列 'date' 并根据现有分隔符的数量创建列,然后创建显示每条记录的日期数的列。

      ID     date   date2    date3  number of dates
0     3009   2016   2017     NULL     2
1     129    2015   NULL     NULL     1
2     119    2014   2019     2020     3
3     120    2020   NULL     NULL     1
4     121    NULL   NULL     NULL     0

我试过这段代码:

df["date"] = df.date.apply(lambda x: pd.Series(str(x).split("+")))

但它崩溃并显示以下错误:

ValueError: Wrong number of items passed 4, placement implies 1

使用str.split拆分

df[['date', 'date2', 'date3']] = df['date'].replace('NULL', np.nan).str.split('+', expand=True)

count

df['number of dates'] = df[['date', 'date2', 'date3']].count(axis=1)

print(df)

     ID  date date2 date3  number of dates
0  3009  2016  2017  None                2
1   129  2015  None  None                1
2   119  2014  2019  2020                3
3   120  2020  None  None                1
4   121   NaN   NaN   NaN                0