Вы можете запускать команды, набирая их полный путь, например. /bin/ls
. Используйте редактор таким образом, чтобы исправить любой загрузочный файл, который вы испортили.
Посмотрите, разрешите ли это то, что вы имеете в виду:
df = df1.merge(df2, on=['D', 'M', 'Y', 'DAY'], how='left')
df['FldSz'] = df['Size'].fillna(0)
Я считаю, что вам нужно pandas.join .
res = df1.join(df2.set_index('DAY'), on='DAY')
и переименовать столбец размера / заполнить N / A как 0.
Вы можете попробовать:
data = pd.merge(df1,df2, on=['DAY'], how='outer')
Вы правы, чтобы использовать merge
, но вы хотите установить how="outer"
при выполнении этого слияния.
df3 = df1.merge(df2[["DAY", "Size"]], how="left")
Настройка how="left"
вернет все строки слева (df1
в этом случае), даже если в df2
нет соответствующей записи. Для записей, где нет соответствующей записи, NaN
заполнит столбцы df2
, где нет записи в df1
.
how="left"
на how="outer"
(ответ был обновлен, чтобы показать это). Использование outer
соединения вернет все значения как в значениях df1
, так и df2
с NaN
, где совпадение не найдено. Вы можете узнать больше о слиянии в пандах из здесь , чтобы вы могли ссылаться, в котором содержится информация обо всех различных типах слияния, которые вы можете использовать.
– vealkind
13 July 2018 в 15:40
how='outer'
, чтобы все ключи (ДД. ДНЯ) обоих кадров данных были зарезервированы. Если у вас есть вопрос о слиянии таблиц, вы можете обратиться сюда: pandas.pydata.org/pandas-docs/version/0.22/generated/… – MJeremy 16 July 2018 в 05:14