我的熊猫数据存储在以下数据中:
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。为什么?这是怎么回事?我应该怎么做才能达到预期的行为? 最佳答案
您可以使用正则表达式替换内容。
df.replace(r'\w+\[([\S]+)\]', r'\1', regex=True)
编辑
熊猫
DataFrame
的替换功能Replace values given in to_replace with value
目标字符串及其需要替换的值可以是正则表达式。为此,您需要将参数中的
regex=True
设置为replace
https://regex101.com/r/7KCs6q/1
查看上面的链接,详细了解正则表达式的说明。
基本上,它使用方括号中的非空格内容作为值,并使用包含某些字符的任何字符串,然后将使用非空格字符的方括号作为目标字符串。