Как вставить данные в существующий фрейм данных, заменив значения в соответствии с условным - PullRequest
0 голосов
/ 16 июня 2020

Я хочу вставить информацию в существующий фрейм данных, эта форма фрейма данных состоит из 2001 строк × 13 столбцов, однако только первый столбец содержит информацию.

У меня есть еще 12 столбцов, но это не того же размера, что и основной фрейм данных, поэтому я хотел бы вставить эти дополнительные столбцы в основной, используя условный. Пример кадра данных:

enter image description here

В этом примере я хочу вставить столбец var в кадр данных 2001 × 13, используя дату в качестве условного и в случае, если нет даты, он пропускает строку или просто добавляет 0.
Я действительно новичок в python и программировании в целом.

1 Ответ

0 голосов
/ 16 июня 2020

Без минимального рабочего примера сложно дать вам четкие рекомендации, но я думаю, что вы ищете .loc pd.DataFrame. Я бы порекомендовал вам сделать следующее:

  • Выбор строк с .loc лучше работает в вашем случае, если даты сначала преобразуются в дату и время, поэтому первый шаг - сделать это преобразование как:
# Pandas is quite smart about guessing date format. If this fails, please check the
# documentation https://docs.python.org/3/library/datetime.html to learn more about
# format strings.
df['date'] = pd.to_datetime(df['date'])

# Make this the index of your data frame.
df.set_index('date', inplace=True)
  • Неясно, как вы собираетесь использовать условные выражения / каково содержимое других ваших столбцов. Используя .loc, это довольно просто
# At Feb 1, 2020, add a value to columns 'var'.
df.loc['2020-02-01', 'var'] = 0.727868
  • Это также может использоваться для диапазонов:
# Assuming you have a second `df2` which as a datetime columns 'date' with the
# data you wish to add to `df`. This will only work if all df2['date'] are found
# in df.index. You can workout the logic for your case.
df.loc[df2['date'], 'var2'] = df2['vals']

Если logi c равен до сложного, а фрейм данных не слишком велик, итерация с .iterrows может быть проще, особенно если вы начинаете с Python.

for idx, row in df.iterrows():
    if idx in list_of_other_dates:
        df.loc[i, 'var'] = (some code here)

Пожалуйста, поясните немного свою проблему, и вы получите лучшие ответы . Не забудьте проверить документацию .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...