Ist es möglich, Teile von Spalten im Pandas Dataframe zu vergleichen? Ich habe das folgende Dataframe-Beispiel, darin sind 4 Sprachen gespeichert (en, de, nl, ua) und jede Sprache soll die gleichen Schlüssel/dieselbe Anzahl an Schlüsseln haben, aber mit unterschiedlichen Werten (die statische Spalte dort belassen) zur Vervollständigung, da ich eine statische Spalte habe, deren Werte immer gleich bleiben).Wie man aggregierte Teile des Pandas Dataframe vergleicht?
static │ langs │ keys │ values
x │ en │ key_1 │ value_en_1
x │ en │ key_2 │ value_en_2
x │ en │ key_3 │ value_en_3
x │ de │ key_1 │ value_de_1
x │ de │ key_2 │ value_de_2
x │ de │ key_3 │ value_de_3
x │ nl │ key_1 │ value_nl_1
x │ nl │ key_2 │ value_nl_2
x │ ua │ key_1 │ value_ua_1
Ich muss überprüfen, was Tasten und wieviele pro Sprache im Vergleich zum englischen fehlen (‚en‘ hier), so etwas wie dies wäre eine gewünschte Ausgabe sein:
│ Lang │ Static │ # Missing │ Keys │
│ de │ x │ 0 │ │
│ nl │ x │ 1 │ key_3 │
│ ua │ x │ 2 │ key_2, key_3 │
Dies ist mein aktueller Fortschritt:
import pandas as pd
# this is read from a csv, but I'll leave it as list of lists for simplicity
rows = [
['x', 'en', 'key_1', 'value_en_1'],
['x', 'en', 'key_2', 'value_en_2'],
['x', 'en', 'key_3', 'value_en_3'],
['x', 'de', 'key_1', 'value_de_1'],
['x', 'de', 'key_2', 'value_de_2'],
['x', 'de', 'key_3', 'value_de_3'],
['x', 'nl', 'key_1', 'value_nl_1'],
['x', 'nl', 'key_2', 'value_nl_2'],
['x', 'ua', 'key_1', 'value_en_1']
]
# create DataFrame out of rows of data
df = pd.DataFrame(rows, columns=["static", "language", "keys", "values"])
# print out DataFrame
print("Dataframe: ", df)
# first group by language and the static column
df_grp = df.groupby(["static", "language"])
# try to sum the number of keys and values per each language
df_summ = df_grp.agg(["count"])
# print out the sums
print()
print(df_summ)
# how to compare?
# how to get the keys?
Dies ist der Ausgang des df_summ ist:
keys values
count count
static language
x de 3 3
en 3 3
nl 2 2
ua 1 1
An diesem Punkt weiß ich nicht weiter. Ich bin dankbar für jede Hilfe/Tipps.
P.S. Dies ist auf Python 3.5.
Fantastisch, danke . Die zweite Lösung scheint komplizierter zu sein, gibt es irgendeinen Grund, warum ich es dem ersten vorziehen würde? –
Ich denke in großen Daten kann Sekunde schneller sein, wenn nur einige fehlende Kategorien. – jezrael
Danke, eine andere Frage. Wo vergleicht es die anderen Sprachen mit der englischen? Ich denke, in Ihrer Lösung, wenn die deutsche Sprache zum Beispiel mehr Schlüssel als die englische Sprache hat, wird die englische Sprache als Schlüssel fehlen, oder? –