Remove Thousand Separator
remove_thousand_separator · numbers · text, number
2026-09-23
กำลังประมวลผล…
remove_thousand_separator · numbers · text, number
2026-09-23
"1,250,000" เป็นข้อความ ไม่ใช่ตัวเลข เทคนิคนี้ลบตัวคั่นออกแล้วแปลงเป็นตัวเลขให้ในขั้นตอนเดียว จุดที่ต้องระวังที่สุดคือไฟล์จากยุโรปซึ่งใช้ลูกน้ำเป็น จุดทศนิยม — "12,5" ที่นั่นแปลว่า 12.5 ไม่ใช่ 125
strip_currency เมื่อยังเหลือลูกน้ำอยู่separator เป็น . หรือแปลงด้วย find_replace ตามลำดับที่ถูกต้องก่อน"แดง, เขียว" — ใช้ split_column แทนseparator ออกทุกตำแหน่ง (ค่าเริ่มต้นคือ ,)toNumber เปิดอยู่จะแปลงผลลัพธ์เป็นตัวเลข ช่องว่างภายในถูกตัดออกด้วย จึงรองรับรูปแบบ 1 250 ที่บางประเทศใช้ตรวจ Preview เสมอเมื่อพบค่าที่มีตัวเลขหลังลูกน้ำเพียงหนึ่งหรือสองหลัก เพราะนั่นคือสัญญาณของรูปแบบทศนิยมแบบยุโรป
| Parameter | Type | Default |
|---|---|---|
columns | string[] | — |
separator | string | "," |
toNumber | boolean | true |
import json
import re
def remove_thousand_separator(value, separator=',', to_number=True):
if not isinstance(value, str):
return value
stripped = value.replace(separator, '')
if not to_number:
return stripped
body = stripped.replace(' ', '')
if not re.fullmatch(r'[+-]?(\d+\.?\d*|\.\d+)', body):
return stripped
number = float(body)
return int(number) if number == int(number) else number
values = ['1,250,000', '1 250', '12,5', None, 3.5]
result = [remove_thousand_separator(value) for value in values]
print(json.dumps(result, ensure_ascii=False))
คอลัมน์ revenue มีค่าแบบ "1,250,000" ทั้งคอลัมน์ รัน remove_thousand_separator แล้วดูค่าต่ำสุดกับสูงสุดในหน้า Dataset ถ้าค่าต่ำสุดดูใหญ่ผิดปกติ เช่น 125 กลายเป็น 1,250 แปลว่าไฟล์นี้ใช้ลูกน้ำเป็นทศนิยม ให้ย้อนขั้นตอนแล้วตั้ง separator ใหม่
ใช้ strip_currency ก่อนเมื่อมีสัญลักษณ์เงินติดมา ใช้ convert_type เพื่อยืนยันชนิดคอลัมน์ และใช้ round_number เมื่อได้ทศนิยมยาวจากการแปลง