行我有大量的CSV文件行,這看起來像:串連基於數量(谷歌瑞風,Excel中/谷歌電子表格)
name a,1
name b,1
name c,1
name d,2
name e,2
我需要連接基於數量的行。結果應該是:
name a|name b|name c
name d|name e
如何在Google Refine或Excel/Google Spreadsheet中執行此操作?
我在想它,但沒有解決方案。
非常感謝!
行我有大量的CSV文件行,這看起來像:串連基於數量(谷歌瑞風,Excel中/谷歌電子表格)
name a,1
name b,1
name c,1
name d,2
name e,2
我需要連接基於數量的行。結果應該是:
name a|name b|name c
name d|name e
如何在Google Refine或Excel/Google Spreadsheet中執行此操作?
我在想它,但沒有解決方案。
非常感謝!
這是一個開放式的提案。唯一Grel公式我使用的是:
row.record.cells['myColumn'].value.join('|')
這裏是JSON,假設你的第一列被命名爲 「myColumn」,第二個 「數字」:
[
{
"op": "core/column-addition",
"description": "Create column test at index 2 based on column number using expression grel:value",
"engineConfig": {
"mode": "row-based",
"facets": [
{
"omitError": false,
"expression": "isBlank(value)",
"selectBlank": false,
"selection": [
{
"v": {
"v": false,
"l": "false"
}
}
],
"selectError": false,
"invert": false,
"name": "ee",
"omitBlank": false,
"type": "list",
"columnName": "ee"
}
]
},
"newColumnName": "test",
"columnInsertIndex": 2,
"baseColumnName": "number",
"expression": "grel:value",
"onError": "set-to-blank"
},
{
"op": "core/column-move",
"description": "Move column test to position 0",
"columnName": "test",
"index": 0
},
{
"op": "core/blank-down",
"description": "Blank down cells in column test",
"engineConfig": {
"mode": "row-based",
"facets": [
{
"omitError": false,
"expression": "isBlank(value)",
"selectBlank": false,
"selection": [
{
"v": {
"v": false,
"l": "false"
}
}
],
"selectError": false,
"invert": false,
"name": "ee",
"omitBlank": false,
"type": "list",
"columnName": "ee"
}
]
},
"columnName": "test"
},
{
"op": "core/column-addition",
"description": "Create column concatenation at index 2 based on column myColumn using expression grel:row.record.cells['myColumn'].value.join('|')",
"engineConfig": {
"mode": "row-based",
"facets": [
{
"omitError": false,
"expression": "isBlank(value)",
"selectBlank": false,
"selection": [
{
"v": {
"v": false,
"l": "false"
}
}
],
"selectError": false,
"invert": false,
"name": "ee",
"omitBlank": false,
"type": "list",
"columnName": "ee"
}
]
},
"newColumnName": "concatenation",
"columnInsertIndex": 2,
"baseColumnName": "myColumn",
"expression": "grel:row.record.cells['myColumn'].value.join('|')",
"onError": "set-to-blank"
}
]
非常感謝您的回覆。我希望從這個工具中學習。目前這種迴應非常有幫助 – armando85
如果您可以使用Python,那麼執行此操作將非常容易。在下面的代碼中,名稱和組從「input.csv」中讀取,分組的名稱(與組一起)被寫入「output.csv」。 A defaultdict
用於創建空列表來存儲組成員。
import collections
import csv
grouped = collections.defaultdict(list)
with open('input.csv') as fp:
reader = csv.reader(fp)
for row in reader:
name, group = row
grouped[group].append(name)
with open('output.csv', 'w', newline='') as fp:
writer = csv.writer(fp, delimiter='|')
for key in sorted(grouped.keys()):
writer.writerow([key] + grouped[key])
是你確定這些是你唯一的兩個選擇?這將像Python中的10行。 – arkottke
請你可以告訴我如何在Python中解決它。謝謝 – armando85