我有一个类似这样的数据框:
A B C
1 red78 square big235
2 green circle small123
3 blue45 triangle big657
我需要能够删除列 C 中所有行的非数字字符,以便我的数据框看起来像:
A B C
1 red78 square 235
2 green circle 123
3 blue45 triangle 657
我尝试使用以下内容但出现了错误,错误信息为“预期字符串或缓冲区”:
import re
dfOutput.imgID = dfOutput.imgID.apply(re.sub('[^0-9]','', dfOutput.imgID), axis = 0)
我应该做些什么呢?
创建数据框的代码:
dfObject = pd.DataFrame()
dfObject.set_value(1, 'A', 'red78')
dfObject.set_value(1, 'B', 'square')
dfObject.set_value(1, 'C', 'big235')
dfObject.set_value(2, 'A', 'green')
dfObject.set_value(2, 'B', 'circle')
dfObject.set_value(2, 'C', 'small123')
dfObject.set_value(3, 'A', 'blue45')
dfObject.set_value(3, 'B', 'triangle')
dfObject.set_value(3, 'C', 'big657')
extract
这个函数,它只会从输入字段中提取一个数字序列。如果有多个由非数字字符分隔的数字部分,此答案只会提取第一个字符序列。 - meta4df1 = df.copy()
,然后你对df1
所做的任何操作都不会产生警告。但是,如果你真的想在原始数据上进行操作,那么你需要使用.loc
,这样就明确表示你要在视图上进行操作。相关信息请参见:https://dev59.com/8WIj5IYBdhLWcg3wHhlX - EdChumextract('(\d+)', expand=False)
似乎也会丢失浮点数的小数点。有没有什么方法可以防止这种情况发生? - Superdooperhero'(\d+\.*\d*)'
或者直接使用其他答案将字符替换为空字符串,剩下的就是数字字符了。 - EdChum