从一列字符串中提取整数

时间:2019-07-10 15:00:15

标签: python pandas for-loop

我有2个数据帧:longdf和shortdf。 Longdf是“主”列表,我需要从shortdf到longdf基本上匹配值,这些值匹配,替换其他列中的值。 longdf和shortdf都需要广泛的数据清理。

目标是达到df“目标”。我试图使用一个for循环,我想要1)提取df单元格中的所有数字,以及2)从单元格中删除空格/单元格空格。第一:为什么这个for循环不起作用?第二:还有更好的方法吗?

select node from java.util.concurrent.ConcurrentHashMap$Node node where node.key.toString() == "rn64832"

1 个答案:

答案 0 :(得分:3)

如果我的理解正确,您想采用一系列包含整数的字符串,并删除所有不是整数的字符。您不需要为此的for循环。相反,您可以使用简单的正则表达式来解决它。

b.replace('\D+', '', regex=True).astype(int)

返回:

0    108
1    102
2    106
3    107

正则表达式用空字符串替换所有非数字字符(用\D表示),删除所有非数字字符。 .astype(int)将序列转换为整数类型。您可以像往常一样将结果合并到最终数据框中:

result = pd.DataFrame({
    'consultant': a, 
    'invoice_number': b.replace('\D+', '', regex=True).astype(int)
})