【问题标题】:How to seperate multiple values in a row from pandas dataframe如何从熊猫数据框中连续分隔多个值
【发布时间】:2022-08-17 18:54:00
【问题描述】:

所以,我有一个 excel 文件,并且我已经在 pandas 数据框中进行了转换,我已经对其进行了一些分析,但是我面临一个问题,那就是如何我可以分隔在同一行中给出的多个值吗,它们使用 a) name1 来区分; b) 名称2

作为 pandas 的初学者,我无法研究一种可以框定列中给出的多个值的逻辑。

这是我正在处理的数据集,我不确定如何区分同一行中给出的多个值。

  • 这回答了你的问题了吗? stackoverflow.com/a/39358924/15981783
  • 好的,但是我该怎么处理写在他们名字前面的a)和b)。还有一些行有多个值,所以它们就像 a)、b)、c)、d)、e)....我该怎么处理它们?
  • 您可以使用str.lstrip() 来表示这些。请看下面我的回答。

标签: python python-3.x pandas dataframe


【解决方案1】:

您可以使用.str.split() 将列分成两列,然后使用.str.lstrip() 删除(a)(b)

>>> import pandas as pd
>>> df = pd.DataFrame({"Chronic medical conditions": ["(a) BP; (b) Diabetes", "(a) Diabetes; (b) high BP"]})
>>> df
  Chronic medical conditions
0       (a) BP; (b) Diabetes
1  (a) Diabetes; (b) high BP

>>> df = df["Chronic medical conditions"].str.split(';', expand=True)
>>> df.columns = ["a", "b"]  # rename columns as neccessary
>>> df
              a              b
0        (a) BP   (b) Diabetes
1  (a) Diabetes    (b) high BP

>>> df["a"] = df["a"].str.lstrip("(a) ")
>>> df["b"] = df["b"].str.lstrip(" (b)")
>>> df
           a         b
0         BP  Diabetes
1   Diabetes   high BP

【讨论】:

  • 感谢您的帮助,但只有 1 个查询,实际上很少有行有超过 2 个值,比如有些行有 4 个值,有些有多达 5 个,所以我可以使这个过程动态化,因为它仅限于 2 个,对吗?
猜你喜欢
  • 2020-01-12
  • 1970-01-01
  • 2022-06-27
  • 1970-01-01
  • 2019-04-30
  • 2019-05-09
  • 1970-01-01
  • 2021-09-28
  • 1970-01-01
相关资源
最近更新 更多