CSV 파일의 특정 열에서 중복 값이있는 행 제거

존재하는 사람

여기에 data.csv가 있습니다.

id: 10, location: Canada, people: 12
id: 10, location: United States, people: 15
id: 15, location: England, people: 19
id: 16, location: India, people: 20
id: 16, location: Germany, people: 9

PHP를 사용하여 출력하고 싶습니다.

id: 10, location: Canada, people: 12
id: 15, location: England, people: 19
id: 16, location: India, people: 20

첫 번째 열에서 동일한 값을 가진 행을 삭제합니다. 어떻게 할 수 있습니까? (저는 PHP를 처음 접했고 여기서 무엇을 해야할지 모르겠습니다. 다른 사람들이 비슷한 문제에 대해 만든 일부 스크립트를 시도했지만 작동하지 않는 것 같습니다.) 덮어 쓰는 대신 결과를 반향하는 것이 바람직합니다. 또는 새 파일 만들기.

blahy

fgetcsv를 사용하여 csv를 한 줄씩 읽고 ':'뒤에있는 것이 키이고 뒤에있는 것이 값인 배열을 만듭니다.

그런 다음 중복을 제거 할 수 있습니다.

데이터 만 있으면 csv 문자열을 구성해야합니다. 그냥 사용하거나 출력 csv 파일에 저장할 수 있습니다.

<?php

$handle = fopen("data.csv", "r");

// parse csv line by line and create data array with its information
$data = [];
while (($row = fgetcsv($handle)) !== false) {
  $newRow = [];
  foreach ($row as $field) {
     $parts = explode(':', $field);
     $key = trim($parts[0]);
     $value = trim($parts[1]);

     $newRow[$key] = $value;
  }

  $data[] = $newRow;
}

// iterate data and remove duplicate ids - keep only first id occurence
$indexedData = [];
foreach ($data as $row) {
  if (!isset($indexedData[$row['id']])) {
    $indexedData[$row['id']] = $row;
  }
}

var_dump($indexedData);

// create csv string with new data
$result = '';
foreach ($indexedData as $row) {
  $fields = [];
  foreach ($row as $key => $value) {
    $fields[] = $key.': '.$value;
  }
  $result .= implode(', ', $fields).PHP_EOL;
}

var_dump($result);

$ indexedData :

array(3) {
  [10]=>
  array(3) {
    ["id"]=>
    string(2) "10"
    ["location"]=>
    string(6) "Canada"
    ["people"]=>
    string(2) "12"
  }
  [15]=>
  array(3) {
    ["id"]=>
    string(2) "15"
    ["location"]=>
    string(7) "England"
    ["people"]=>
    string(2) "19"
  }
  [16]=>
  array(3) {
    ["id"]=>
    string(2) "16"
    ["location"]=>
    string(5) "India"
    ["people"]=>
    string(2) "20"
  }
}

$ result :

string(111) "id: 10, location: Canada, people: 12
id: 15, location: England, people: 19
id: 16, location: India, people: 20
"

또는 csv의 데이터에 신경 쓰지 않는다면 (예를 들어 인원 수 등이 필요하지 않음) 여기에 더 간단한 버전이 있습니다.

<?php

$handle = fopen("data.csv", "r");

$data = [];
while (($row = fgetcsv($handle)) !== false) {
  if (!isset($data[$row[0]])) {
    $data[$row[0]] = $row;
  }
}

$result = '';
foreach ($data as $row) {
  $result .= implode(',', $row).PHP_EOL;
}

var_dump($result);

$ result는 동일합니다.

이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.

침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제

에서 수정
0

몇 마디 만하겠습니다

0리뷰
로그인참여 후 검토

관련 기사

분류에서Dev

특정 열에서 특정 값이있는 중복 행 제거

분류에서Dev

Linux의 파일에서 특정 행 / 행 또는 중복 제거

분류에서Dev

특정 행에 파이썬의 데이터 프레임에 중복 값이있는 경우 전체 열을 제거하는 방법

분류에서Dev

csv는 한 열에 중복 값이있는 모든 행을 제거합니다.

분류에서Dev

중복 열 값이있는 행 제거

분류에서Dev

tensorflow.js의 csv 데이터에서 중복 행 제거

분류에서Dev

Pandas에서 열의 특정 값이있는 모든 행을 복제하여 중복 된 열 값을 변경하려면 어떻게해야합니까?

분류에서Dev

특정 열에 반복 값이있는 경우 전체 행 제거

분류에서Dev

특정 열이있는 SQL에서 중복 제거

분류에서Dev

텍스트 파일을 읽어 Scala의 특정 열에서 중복을 제거하는 방법

분류에서Dev

CSV 파일에있는 경우 특정 열 제거

분류에서Dev

CSV 파일의 특정 열에서 공백 제거

분류에서Dev

CSV 파일의 특정 열에서 항목을 기반으로 행을 제거하기위한 스크립트

분류에서Dev

값 (주소 필드)으로 추가 쉼표가있는 행이 거의없는 csv 파일에서 열을 추출하여 열 개수가 중단됩니다.

분류에서Dev

특정 행에서 특정 열의 값을 제거하는 방법

분류에서Dev

특정 열에 중복 값이있는 행 반환

분류에서Dev

두 열에 중복 값이있는 행 제거

분류에서Dev

행이 아닌 하나의 열에서 중복 제거

분류에서Dev

다중 값 특정 열이있는 여러 행의 동일한 값에서 하나의 행 가져 오기

분류에서Dev

데이터 프레임의 특정 열에서 중복 값을 제거하는 방법은 무엇입니까?

분류에서Dev

Python에서 정규식을 사용하여 2 개 열을 기반으로 csv 파일에서 중복 행 제거

분류에서Dev

하나의 열 동적 데이터에서 중복이있는 행의 중복 제거

분류에서Dev

열의 각 행에서 특정 값 제거

분류에서Dev

팬더는 특정 열에서 중복 행 값을 삭제합니다.

분류에서Dev

Pandas-특정 열의 값을 기반으로 중복 제거

분류에서Dev

열의 행을 반복하고 파이썬에서 특정 단어 뒤에있는 모든 텍스트를 제거합니다.

분류에서Dev

표현식이있는 특정 열의 최대 열 값을 사용하여 BigQuery에서 레코드 중복을 제거하고 싶습니다.

분류에서Dev

행이 중복 된 경우에만 특정 열에 NA를 포함하는 행 제거 (다른 두 열 기준)

분류에서Dev

R에서 중복 값이있는 행의 모든 복사본을 제거합니다.

Related 관련 기사

  1. 1

    특정 열에서 특정 값이있는 중복 행 제거

  2. 2

    Linux의 파일에서 특정 행 / 행 또는 중복 제거

  3. 3

    특정 행에 파이썬의 데이터 프레임에 중복 값이있는 경우 전체 열을 제거하는 방법

  4. 4

    csv는 한 열에 중복 값이있는 모든 행을 제거합니다.

  5. 5

    중복 열 값이있는 행 제거

  6. 6

    tensorflow.js의 csv 데이터에서 중복 행 제거

  7. 7

    Pandas에서 열의 특정 값이있는 모든 행을 복제하여 중복 된 열 값을 변경하려면 어떻게해야합니까?

  8. 8

    특정 열에 반복 값이있는 경우 전체 행 제거

  9. 9

    특정 열이있는 SQL에서 중복 제거

  10. 10

    텍스트 파일을 읽어 Scala의 특정 열에서 중복을 제거하는 방법

  11. 11

    CSV 파일에있는 경우 특정 열 제거

  12. 12

    CSV 파일의 특정 열에서 공백 제거

  13. 13

    CSV 파일의 특정 열에서 항목을 기반으로 행을 제거하기위한 스크립트

  14. 14

    값 (주소 필드)으로 추가 쉼표가있는 행이 거의없는 csv 파일에서 열을 추출하여 열 개수가 중단됩니다.

  15. 15

    특정 행에서 특정 열의 값을 제거하는 방법

  16. 16

    특정 열에 중복 값이있는 행 반환

  17. 17

    두 열에 중복 값이있는 행 제거

  18. 18

    행이 아닌 하나의 열에서 중복 제거

  19. 19

    다중 값 특정 열이있는 여러 행의 동일한 값에서 하나의 행 가져 오기

  20. 20

    데이터 프레임의 특정 열에서 중복 값을 제거하는 방법은 무엇입니까?

  21. 21

    Python에서 정규식을 사용하여 2 개 열을 기반으로 csv 파일에서 중복 행 제거

  22. 22

    하나의 열 동적 데이터에서 중복이있는 행의 중복 제거

  23. 23

    열의 각 행에서 특정 값 제거

  24. 24

    팬더는 특정 열에서 중복 행 값을 삭제합니다.

  25. 25

    Pandas-특정 열의 값을 기반으로 중복 제거

  26. 26

    열의 행을 반복하고 파이썬에서 특정 단어 뒤에있는 모든 텍스트를 제거합니다.

  27. 27

    표현식이있는 특정 열의 최대 열 값을 사용하여 BigQuery에서 레코드 중복을 제거하고 싶습니다.

  28. 28

    행이 중복 된 경우에만 특정 열에 NA를 포함하는 행 제거 (다른 두 열 기준)

  29. 29

    R에서 중복 값이있는 행의 모든 복사본을 제거합니다.

뜨겁다태그

보관