Ich lerne derzeit Pandas. Für eine Aufgabe muss ich zu Datenrahmen zusammenführen. Dies ist erfolgreich für die Top 15 Datensätze, die ich brauche, außer für einen, der Iran ist. Wenn ich eine ‚äußere‘ merge tun, stellt es mir dies:Merge-Funktion funktioniert nicht für einen einzelnen Datensatz
+---------+-------+------------+--------------------+------------+-----------------+-------------------------+----------+----------------+---------------------------+--------------+---------------+
| | Rank | Documents | Citable documents | Citations | Self-citations | Citations per document | H index | Energy Supply | Energy Supply per Capita | % Renewable | 2006 |
+---------+-------+------------+--------------------+------------+-----------------+-------------------------+----------+----------------+---------------------------+--------------+---------------+
| Country | | | | | | | | | | | |
| Iran | 13.0 | 8896.0 | 8819.0 | 57470.0 | 19125.0 | 6.46 | 72.0 | NaN | NaN | NaN | 3.895523e+11 |
| Iran | NaN | NaN | NaN | NaN | NaN | NaN | NaN | 9172000000 | 119.0 | 5.707721 | NaN |
+---------+-------+------------+--------------------+------------+-----------------+-------------------------+----------+----------------+---------------------------+--------------+---------------+
Ich möchte eigentlich eine ‚innere‘ verschmelzen, aber dann werden keine Ergebnisse für Iran gezeigt. Was könnte die Ursache dafür sein, dass die beiden Iran-Aufzeichnungen nicht zusammengeführt werden? Diese
ist, wie ich fusionieren:
combined2 = pd.merge(combined1, energy, how='outer', on='Country')
Die combined1
Datenrahmen von einem anderen verschmelzen, die ich überprüft und die einen einzelnen Datensatz für Iran enthält. Dies ist, wie ich geschaffen, um die energy
Datenrahmen:
country_dict = {"Republic of Korea": "South Korea",
"United States of America": "United States",
"United Kingdom of Great Britain and Northern Ireland": "United Kingdom",
"China, Hong Kong Special Administrative Region": "Hong Kong",
"Korea, Rep.": "South Korea",
"Iran, Islamic Rep.": "Iran",
"Hong Kong SAR, China": "Hong Kong"}
def convert_county_name(name):
name = re.sub("\(.*\)", "", name)
name = re.sub("[0-9]", "", name)
for k, v in country_dict.items():
name = name.replace(k, v)
return name
en_converters = {1 : lambda x: x * 1000000 if isinstance(x, numbers.Number) else x,
0 : convert_county_name}
energy = pd.read_excel("Energy Indicators.xls",
skiprows = 17,
skip_footer = 38,
parse_cols = [2,3,4,5],
names = ['Country', 'Energy Supply', 'Energy Supply per Capita',
'% Renewable'],
na_values="...",
converters = en_converters)
Es scheint Wert 'Iran' dupliziert wird, ist die beste Verwendung für einige kleine Datenprobe testen . Oder ein anderes mögliches Problem sind einige Leerzeichen wie "Iran" und "Iran" – jezrael
Wie dumm! Ich beherrschte die Whitespaces, weil sie in der Jupyter-Tabelle nicht angezeigt wurden, aber als ich das spezifische Element druckte, gab es tatsächlich einen Whitespace nach "Iran" –
Ya, diese Art von Fehler ist sehr schwer zu finden, wenn du triffst es nicht vorher ... – jezrael