Merge Columns
merge_columns · columns · any
2026-09-23
กำลังประมวลผล…
merge_columns · columns · any
2026-09-23
บางครั้งข้อมูลถูกแยกไว้หลายคอลัมน์เกินความจำเป็น เช่น บ้านเลขที่ ถนน และตำบลที่ต้องรวมเป็นที่อยู่บรรทัดเดียว หรือรหัสสองส่วนที่ต้องต่อกันเป็นกุญแจ เทคนิคนี้รวมให้ พร้อมให้เลือกว่าจะทำอย่างไรเมื่อบางคอลัมน์ว่าง
columns ซึ่งเป็นลำดับที่ปรากฏในผลลัพธ์nulls กำหนดวิธีจัดการค่าว่าง — skip ข้ามไป empty แทนด้วยข้อความว่าง และ propagate ทำให้ทั้งค่าว่างถ้ามีคอลัมน์ใดว่างremoveSource เพื่อลบคอลัมน์ต้นทางเมื่อไม่ต้องใช้แล้ว| Parameter | Type | Default |
|---|---|---|
columns | string[] | — |
separator | string | " " |
newName | string | — |
removeSource | boolean | false |
nulls | skip | empty | propagate | "skip" |
import json
def merge_columns(rows, columns, separator=' ', nulls='skip'):
result = []
for row in rows:
parts = [row.get(column) for column in columns]
if all(part is None for part in parts) or (nulls == 'propagate' and any(part is None for part in parts)):
result.append(None)
continue
kept = [part for part in parts if part is not None] if nulls == 'skip' else parts
result.append(separator.join('' if part is None else str(part) for part in kept))
return result
rows = [{'a': 'ไทย', 'b': 'B'}, {'a': None, 'b': None}, {'a': '', 'b': 'C'}, {'a': 'X', 'b': None}]
print(json.dumps(merge_columns(rows, ['a', 'b'], '-'), ensure_ascii=False))
ที่อยู่ถูกเก็บใน address_line, subdistrict และ province โดยบางแถวไม่มีตำบล เลือกทั้งสามคอลัมน์ ตั้ง separator เป็น " " และ nulls เป็น skip เพื่อไม่ให้เกิดช่องว่างซ้อนในแถวที่ขาดข้อมูล ตรวจ Preview ว่าที่อยู่ที่ได้อ่านรู้เรื่อง แล้วเปิด removeSource ถ้าไม่ต้องใช้คอลัมน์ย่อยอีก
ใช้ split_column สำหรับทิศทางตรงกันข้าม ใช้ trim_whitespace และ collapse_spaces หลังรวมเพื่อเก็บช่องว่างส่วนเกิน และใช้ remove_column เมื่อคอลัมน์ต้นทางไม่จำเป็นแล้ว