使用分隔符将一列拆分为多列

发布于 2025-01-10 02:24:51 字数 943 浏览 2 评论 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

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

      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:传递的项目数量错误为 4,放置意味着 1

i have a dataframe that have one of its filed contains multiple values separated by "+".
What i want is to split each value into a new column.

import pandas as pd

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

df = pd.DataFrame(df)

LOOK like this:

df    

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

I want to split the column 'date' by the '+' delimiter and create columns based on the number of existing delimiters then create a columns that display the number of dates for each record.

      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

I tried this code:

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

but it crush and display the below error:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

折戟 2025-01-17 02:24:51

使用 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

Use str.split to split

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

and count to 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文