Software zum Zusammenführen von CSV-Dateien mit Wahr/Falsch-Spalten, falls Eintrag vorhanden

Ich habe mehrere separate CSV-Dateien, die nur eine einspaltige Liste von E-Mail-Adressen sind, wobei jede Datei ein „Tag“ darstellt, das dieser E-Mail zugeordnet ist. Ich möchte sie in einer CSV-Datei zusammenführen, sodass alle E-Mail-Adressen in allen Dateien in der ersten Spalte aufgeführt sind und alle anderen Spalten die Dateinamen und ein Wahr/Falsch oder 1/0 sind, wenn sich die E-Mail darin befindet Datei.

Welche Software hätte diese Funktion und wie würde ich sie implementieren? Ich besitze die neueste Version von Excel, wenn das geht.

Hast du Programmiererfahrung? Das wäre in Python mit Pandas ziemlich einfach.
@EricShain Ich habe etwas Programmiererfahrung. Es ist lange her, aber ich könnte sicher eine Vorlage optimieren. Ich habe mir gerade ein Einführungsvideo angesehen, in dem Pandas erklärt werden, und war mir aufgrund dessen, was ich gesehen habe, nicht sicher, wie ich meine Anfrage umsetzen sollte. Kennen Sie ein Beispiel, auf dem ich aufbauen könnte, was ich brauche, oder sollte ich diese Frage einfach in einem der Programmierstack-Austausche stellen?
Es gibt enorme Ressourcen, die nur eine Google-Suche entfernt sind. Hier ist eine von StackOverflow: stackoverflow.com/questions/36749741/… . Wenn Sie Python und Pandas nicht installiert haben, empfehle ich die Verwendung der Anaconda-Distribution: continuum.io/why-anaconda
@EricShain Danke! Die Installation der Anaconda-Distribution verlief gut, und ich absolviere einen gut rezensierten Kurs über Pandas, um das zu bekommen, was ich brauche. Also sollte ich jetzt gut gehen. Schätzen Sie die Hilfe!
Ich denke, Bash wäre dafür ausreichend ...

Antworten (2)

Perl ist dafür großartig. Sie können auch einen einfachen Bash-Einzeiler erstellen. Dies sollte aber funktionieren.

#!/usr/bin/env perl
use strict;
use warnings;

use Text::CSV_XS;

my $csv = Text::CSV_XS->new;
my %db, @tags;

while (my $email = <<>>) {
  chomp $email;
  push @tags, $ARGV;
  $db{$email}{$ARGV} = 1;
}

# Header
$csv->say(*STDOUT, ["Email", map $_, @tags]);

foreach my $email (keys %db) {
  $csv->say(*STDOUT, [$email, map $db{$email}{$_}//0, @tags]);
}

Wenn Sie nicht haben Text::CSV_XS, können Sie es mit installieren

cpan Text::CSV_XS;

Speichern Sie dies in einer Datei, runme, chmod u+x runme, und dann./runme *

Letztendlich scheint es, basierend auf dem Erfahrungsstand, den ich hatte, zwei Möglichkeiten zu geben, damit umzugehen, die ich hier teilen kann, falls sich jemand in einer ähnlichen Situation befindet.

  1. Ganz einfach in Excel mit einem Makro. Diese SO-Antwort erklärt gut, wie man eine grundlegende Zusammenführung gemeinsamer Werte durchführt. Wenn Sie das Problem schnell lösen möchten, ist dies wahrscheinlich die beste Wahl.
  2. Wie Eric Shain im ersten Kommentar sagte, ist die Pandas-Bibliothek in Python speziell für solche Dinge konzipiert und bietet viel interessantere Möglichkeiten. Da ich mehr Flexibilität und die Möglichkeit brauchte, später mehr zu tun, entschied ich mich für diese Lösung, da die einfache Programmierung in Python sehr einfach ist, auch wenn Sie so eingerostet sind wie ich. Siehe den dritten Kommentar für ausgezeichnete Links, um loszulegen!