Pandy Pythona łączą tylko niektóre kolumny
Czy możliwe jest łączenie tylko niektórych kolumn? Mam ramkę danych df1 z kolumnami x, y, z i df2 z kolumnami x, A, b, c,d, e, F itp.
Chcę scalić dwa ramki danych na x, ale chcę tylko scalić kolumny df2.a, df2.nie cała ramka danych.
Wynikiem będzie ramka danych z X, y, Z, a, b.
Mógłbym scalić i usunąć niechciane kolumny, ale wygląda na to, że jest lepsza metoda.
4 answers
Możesz połączyć ramkę sub-DataFrame (tylko z tymi kolumnami):
df2[list('xab')] # df2 but only with columns x, a, and b
df1.merge(df2[list('xab')])
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2015-10-27 07:05:27
Chcesz użyć dwóch nawiasów, więc jeśli robisz działanie typu VLOOKUP:
df = pd.merge(df,df2[['Key_Column','Target_Column']],on='Key_Column', how='left')
To da Ci wszystko w oryginalnym df + dodaj odpowiednią kolumnę w df2, do której chcesz dołączyć.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-03-13 14:18:52
Możesz użyć .loc
, aby wybrać określone kolumny ze wszystkimi wierszami, a następnie pociągnąć je. Przykład znajduje się poniżej:
pandas.merge(dataframe1, dataframe2.iloc[:, [0:5]], how='left', on='key')
W tym przykładzie łączysz dataframe1 i dataframe2. Zdecydowałeś się na zewnętrzne połączenie w lewo na "kluczu". Jednak dla dataframe2 podano .iloc
, który pozwala na określenie wierszy i kolumn, które chcesz w formacie liczbowym. Używając :
, wybierasz wszystkie wiersze, ale [0:5]
wybiera pierwsze 5 kolumn. Można użyć .loc
, aby określić po imieniu, ale jeśli Twoje radzenie sobie z długimi nazwami kolumn, wtedy .iloc
może być lepsze.
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2016-12-22 01:09:53
Służy do scalania wybranych kolumn z dwóch tabel.
Jeśli table_1 zawiera t1_a,t1_b,t1_c..,id,..t1_z
kolumny,
i table_2 zawiera t2_a,t2_b,t2_c...,id,..t2_z
kolumny,
i tylko t1_a,id,t2_a są wymagane w końcowej tabeli, następnie
mergedCSV = table_1[['t1_a','id']].merge(table_2[['t2_a','id']], on = 'id',how = 'left')
#save resulting output file
mergedCSV.to_csv('output.csv',index = False)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-22 21:48:14