我有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"
答案 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)
})