Ich habe zwei Pandas Datenrahmen, die ich zusammen auf drei verschiedene Schlüssel zusammenführen möchte ... Art von. Jeder Datenrahmen hat eine geschlechtsspezifische Spalte und eine country_destination-Spalte, in der ich den äußeren Join ausführen möchte. Ein Datenrahmen hat eine age_bucket-Spalte, die eine Zeichenfolge ist, die den Altersbereich z.B. 45-49, 50-54, 55-59, die ich mit der pandas apply-Methode in eine Liste in einer anderen Spalte gewandelt habe. Meine Frage ist, wenn Sie eine Verbindung zwischen zwei Datenrahmen auf mehreren Schlüsseln machen, können Sie auch eine where-Anweisung irgendwo tun, um in der Lage zu sein, auf Spalten, die nicht die gleichen genauen Datentypen teilen? Zum Beispiel könnte ich sagen "diese Tabellen zu Gender Join und country_destination Spalten, in denen das Alter eines Benutzers in der Liste Wert von age_gender des age_list Spalte"Put WHERE Klausel auf Pandas Merge
age_gender = pd.read_csv('data/age_gender_bkts.csv')
users = pd.read_csv('data/train_users_2.csv')
def getAgeList(row):
clean_age = row['age_bucket'].replace('+', '')
min_max = clean_age.split('-')
if len(min_max) > 1:
min_max = list(range(int(min_max[0]), int(min_max[1]) + 1))
return min_max
age_gender['age_list'] = age_gender.apply(lambda x: getAgeList(x), axis=1)
combined_df = pd.merge(users, age_gender, on=['country_destination', 'gender'])
user.columns
Index(['id', 'date_account_created', 'timestamp_first_active',
'date_first_booking', 'gender', 'age', 'signup_method', 'signup_flow',
'language', 'affiliate_channel', 'affiliate_provider',
'first_affiliate_tracked', 'signup_app', 'first_device_type',
'first_browser', 'country_destination', 'lat_destination',
'lng_destination', 'distance_km', 'destination_km2',
'destination_language ', 'language_levenshtein_distance'],
dtype='object')
age_gender.
SpaltenIndex(['age_bucket', 'country_destination', 'gender',
'population_in_thousands', 'year', 'age_list'],
dtype='object')
Warum Sie den Datenrahmen vor der Zusammenführung nicht filtern? –
Können Sie einige Datenproben hinzufügen, 2-4 Zeilen für jeden Datenrahmen mit der gewünschten Ausgabe? Ich denke [minimales, vollständiges und überprüfbares Beispiel] (http://stackoverflow.com/help/mcve). Vielen Dank. – jezrael
Auch gibt es viele Spalten, es scheint 2 - 3 Spalten in jedem Datenframe ist nur in Proben notwendig. – jezrael