【问题标题】:Dataframe Column into Multiple Columns by delimiter ',' : expand = True, n =-1通过分隔符','将数据框列分成多列:expand = True,n =-1
【发布时间】:2021-03-20 16:27:08
【问题描述】:

我的第一个问题谢谢)抱歉冗长的公式在这里输入图片描述 研究了所有相关帖子

我有什么

  • 我的 Dataframe 列(请参见屏幕截图)是由分隔符 ',' Car 参数分隔的字符串。

我的数据框:-

  • 有些行带有里程,而有些则没有(屏幕截图),因此有些行的分隔符较少。

任务

  • 需要创建 5 列(最大分隔符数)来分别存储 CarParameters(Mileage、GearBox、HP、Body 等)

  • 如果一行没有 Mileage 则在 Mileage 列中输入 0

我所知道的并且效果很好

df["name"].str.split(" ", expand = True) 默认为n=-1 并拆分为必要的列 示例:

问题:

  • 如果我使用 str.split(" ", expand = True) 方法 - GearBox (ATM) 被错误地放在新创建的里程列下,因为该行缺少一个分隔符(屏幕截图)

结果:-

-

【问题讨论】:

  • 您可以将数据框的前 10 行作为文本提供吗? print(df.head(10).to_dict) 并将其粘贴到您的问题中,请参阅 minimal reproducible exampleHow to Ask
  • 感谢您记下的公平点,并将在以后的帖子中使用

标签: pandas split multiple-columns


【解决方案1】:

您可以尝试 lambda 函数与下面的列表连接相结合。

>>> import pandas as pd
>>> df = pd.DataFrame([['1,2,3,4,5'],['2,3,4,5']], columns=["CarParameters"])
>>> print(pd.DataFrame(df.CarParameters.apply(
       lambda x: str(x).split(',')).apply(
          lambda x: [0]*(5-len(x)) + x).to_list(), columns=list("ABCDE")))

   A  B  C  D  E
0  1  2  3  4  5
1  0  2  3  4  5

【讨论】:

  • 你测试了吗?似乎有些行的大小不一样。
  • 是的,我已经测试过了。 [0]*(5-len(x)) + x: 正在将所有 4 个大小的行变为 5
  • 你能发布最终结果吗?
  • 我已经在答案中添加了结果
  • 哇!!!非常感谢你。我花了两天时间真正解决了这个问题!非常感谢你,工作就像一个魅力
猜你喜欢
  • 2018-03-17
  • 2016-09-16
  • 2021-02-02
  • 2020-05-23
  • 1970-01-01
  • 1970-01-01
  • 2019-05-11
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多