使用定界符将一列拆分为多列
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
我有一个数据框,其中一个字段包含多个由“+”分隔的值。 我想要的是将每个值拆分为一个新列。
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