【问题标题】:How to slice all of the elements of pandas dataframe at once?如何一次切片熊猫数据框的所有元素?
【发布时间】:2019-12-03 05:34:25
【问题描述】:

我的 Pandas 数据框中存储了以下数据:

           Factor          SimTime          RealTime  SimStatus
0    Factor[0.48]   SimTime[83.01]  RealTime[166.95]  Paused[F]
1    Factor[0.48]   SimTime[83.11]  RealTime[167.15]  Paused[F]
2    Factor[0.49]   SimTime[83.21]  RealTime[167.36]  Paused[F]
3    Factor[0.48]   SimTime[83.31]  RealTime[167.57]  Paused[F]

我想创建一个只包含 [] 中所有内容的新数据框。

我正在尝试使用以下代码:

df = dataframe.apply(lambda x: x.str.slice(start=x.str.find('[')+1, stop=x.str.find(']')))

但是,我在df 中看到的只是 NaN。为什么?这是怎么回事?我应该怎么做才能达到预期的行为?

【问题讨论】:

  • 如果有人解决了,请告诉我为什么这种方法是错误的以及如何解决这个问题?
  • @abhilb 提供了解决方案。检查下面。
  • 没关系,但我想知道这种方法有什么问题,我只是不想通过查看另一种方法来忽略这个问题。谢谢。
  • 你说得对,不过,这只是我提取数据的工具,所以我暂时对分辨率没问题。不过,如果有人看到它并在这里指出任何错误,我会留意这里。

标签: python python-3.x pandas dataframe data-analysis


【解决方案1】:

您可以使用正则表达式来替换内容。

df.replace(r'\w+\[([\S]+)\]', r'\1', regex=True)

编辑

替换 pandasDataFrame的功能@

Replace values given in to_replace with value

目标字符串和需要替换的值可以是正则表达式。为此,您需要将参数中的regex=True 设置为replace

https://regex101.com/r/7KCs6q/1 看上面的链接可以看到正则表达式的详细解释。

基本上,它使用方括号内的非空白内容作为值,并使用带有一些字符的任何字符串,后跟带有非空白字符的方括号作为目标字符串。

【讨论】:

  • 谢谢,这行得通。你能解释一下,刚刚发生了什么吗?
  • 感谢您的简明解释。我会阅读更多关于正则表达式的内容。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-26
  • 2015-08-11
  • 1970-01-01
  • 2018-07-28
  • 2017-02-22
  • 1970-01-01
  • 2017-08-13
相关资源
最近更新 更多