У меня есть два фрейма данных: df1 и df2.python pandas: объединить два кадра данных, но не объединить строки повторения
df1 следующая:
name exist
a 1
b 1
c 1
d 1
e 1
df2 (только один столбец: имя) является следующее:
name
e
f
g
a
h
Я хочу, чтобы объединить эти два dataframe, и не сливались повторять имена, Я имею в виду, если имя в df2 существует в df1, просто покажите один раз, иначе, если имя df2 не существует в df1, установите существующее значение равным 0 или Nan. например, как df1 (есть и е) и df2 (есть и е, просто показал, е раз), я хочу быть следующим ДФ:
a 1
b 1
c 1
d 1
e 1
f 0
g 0
h 0
Я использовал функцию Concat чтобы сделать это, мой код выглядит следующим образом:
import pandas as pd
df1 = pd.DataFrame({'name': ['a', 'b', 'c', 'd', 'e'],
'exist': ['1', '1', '1', '1', '1']})
df2 = pd.DataFrame({'name': ['e', 'f', 'g', 'h', 'a']})
df = pd.concat([df1, df2])
print(df)
но результат неправильно (имя а и е повторяют будут показаны):
exist name
0 1 a
1 1 b
2 1 c
3 1 d
4 1 e
0 NaN e
1 NaN f
2 NaN g
3 NaN h
4 NaN a
пожалуйста, дайте свои руки, заранее спасибо!
благодаря @Psidom для ваш ответ, я приму это. Не могли бы вы рассказать мне о том, как «внешний» подробно, я имею в виду разницу в левом, правом, внутреннем, сливочном. Благодаря! – tktktk0711
Проверьте этот http://pandas.pydata.org/pandas-docs/stable/generated/pandas.DataFrame.merge.html, а также этот http://stackoverflow.com/questions/448023/what-is-the-difference -between-влево-вправо-наружный и внутренний--соединения. Грубо говоря, соединение является разновидностью соответствия таблиц на основе некоторых ключевых столбцов; left сохраняет все записи из первого кадра данных; right сохраняет все записи из второго кадра данных; внутренний хранит только записи, которые существуют в обоих кадрах данных, а внешний хранит все записи. – Psidom
спасибо за ваш ответ! – tktktk0711