PANDAS: Объединение фреймов данных с идентификаторами

Вы можете запускать команды, набирая их полный путь, например. /bin/ls. Используйте редактор таким образом, чтобы исправить любой загрузочный файл, который вы испортили.

0
задан SHV_la 13 July 2018 в 11:50
поделиться

4 ответа

Посмотрите, разрешите ли это то, что вы имеете в виду:

df = df1.merge(df2, on=['D', 'M', 'Y', 'DAY'], how='left')
df['FldSz'] = df['Size'].fillna(0)
0
ответ дан MJeremy 17 August 2018 в 12:59
поделиться
  • 1
    Большое вам спасибо, этот самый близкий к желаемому состоянию, мне просто нужно удалить один столбец. Спасибо всем за ваш вклад и за возвращение так быстро! Действительно ценю это :) – SHV_la 13 July 2018 в 13:24
  • 2
    На самом деле, я дважды проверил это, и есть один бит, который, возможно, я не описал в сообщении. Вы знаете какой-либо способ включить значения D M Y DAY в df2? Я имею в виду, что теперь у меня есть df3 с значениями D M Y DAY df1 с добавленным столбцом «Размер», однако есть дни, когда произошло наводнение, но без регистрации осадков. Эти дни наводнения имеют собственные значения D M Y DAY, но не включены в df3. Есть ли у вас какие-либо идеи относительно того, как я могу их добавить? – SHV_la 13 July 2018 в 14:06
  • 3
    вы можете выбрать how='outer', чтобы все ключи (ДД. ДНЯ) обоих кадров данных были зарезервированы. Если у вас есть вопрос о слиянии таблиц, вы можете обратиться сюда: pandas.pydata.org/pandas-docs/version/0.22/generated/… – MJeremy 16 July 2018 в 05:14

Я считаю, что вам нужно pandas.join .

res = df1.join(df2.set_index('DAY'), on='DAY')

и переименовать столбец размера / заполнить N / A как 0.

1
ответ дан Maria 17 August 2018 в 12:59
поделиться

Вы можете попробовать:

data = pd.merge(df1,df2, on=['DAY'], how='outer')
0
ответ дан Oumab10 17 August 2018 в 12:59
поделиться

Вы правы, чтобы использовать merge, но вы хотите установить how="outer" при выполнении этого слияния.

df3 = df1.merge(df2[["DAY", "Size"]], how="left")

Настройка how="left" вернет все строки слева (df1 в этом случае), даже если в df2 нет соответствующей записи. Для записей, где нет соответствующей записи, NaN заполнит столбцы df2, где нет записи в df1.

1
ответ дан vealkind 17 August 2018 в 12:59
поделиться
  • 1
    спасибо за ваш вклад здесь! Я не упомянул об этом в сообщении, но есть несколько дней, когда происходит наводнение без регистрации осадков. На данный момент у меня есть NAN для размера потока, когда затопления нет, но количество осадков есть, но новый df не показывает дней, когда осадков не было, но затопление продолжалось. Другими словами, мне нужно включить значения «DAY» из обоих фреймов данных, но в этом решении у меня есть только они из df1, что исключает полезную информацию из df2. У тебя есть идеи? – SHV_la 13 July 2018 в 15:30
  • 2
    В этом случае изменить how="left" на how="outer" (ответ был обновлен, чтобы показать это). Использование outer соединения вернет все значения как в значениях df1, так и df2 с NaN, где совпадение не найдено. Вы можете узнать больше о слиянии в пандах из здесь , чтобы вы могли ссылаться, в котором содержится информация обо всех различных типах слияния, которые вы можете использовать. – vealkind 13 July 2018 в 15:40
  • 3
    Огромное спасибо :) – SHV_la 13 July 2018 в 15:53
Другие вопросы по тегам:

Похожие вопросы: