Как заполнить отсутствующие записи в Pandas [duplicate]

Если это приложение для iPhone, а не универсальное, убедитесь, что следующее поле пуст:

Цели> Сводка> Информация о развертывании iPhone / iPod> Основной интерфейс

Если вы укажете xib, он сработает.

34
задан xav 20 May 2015 в 18:08
поделиться

4 ответа

Вы можете предоставить этот столбец fillna (см. docs ), он будет использовать эти значения для соответствия индексов для заполнения:

In [17]: df['Cat1'].fillna(df['Cat2'])
Out[17]:
0    cat
1    dog
2    cat
3    ant
Name: Cat1, dtype: object
67
ответ дан joris 20 August 2018 в 18:34
поделиться
  • 1
    Ницца! Я не знал, что fillna снимает серию. – Ami Tavory 20 May 2015 в 18:15
  • 2
    Благодаря! Я думал, что серия должна быть точного размера числа значений NA. – xav 20 May 2015 в 21:04

Просто используйте параметр value вместо method:

In [20]: df
Out[20]:
  Cat1      Cat2  Day
0  cat     mouse    1
1  dog  elephant    2
2  cat     giraf    3
3  NaN       ant    4

In [21]: df.Cat1 = df.Cat1.fillna(value=df.Cat2)

In [22]: df
Out[22]:
  Cat1      Cat2  Day
0  cat     mouse    1
1  dog  elephant    2
2  cat     giraf    3
3  ant       ant    4
4
ответ дан chrisaycock 20 August 2018 в 18:34
поделиться
  • 1
    Спасибо за ответ! Что он изменил, чтобы использовать значение, а не метод, описанный joris? – xav 20 May 2015 в 21:06
  • 2
    @xav value - первый параметр, поэтому joris фактически выполняет то же самое. По его словам, см. docs . – chrisaycock 20 May 2015 в 22:02
  • 3
    Да, docstring немного вводит в заблуждение, поскольку method указан там первым. – joris 21 May 2015 в 06:27

Вы могли бы сделать

df.Cat1 = np.where(df.Cat1.isnull(), df.Cat2, df.Cat1)

. Общая конструкция в RHS использует тройственный паттерн из pandas поваренной книги (который он платит, чтобы читать в любом случае). Это векторная версия a? b: c.

6
ответ дан Community 20 August 2018 в 18:34
поделиться
  • 1
    Не решение, которое я использовал для этой проблемы, но очень интересный образец! Благодаря! – xav 20 May 2015 в 21:04
  • 2
    Всегда пожалуйста. – Ami Tavory 13 May 2018 в 19:15

Вот более общий подход (метод fillna, вероятно, лучше)

def is_missing(Cat1,Cat2):    
    if np.isnan(Cat1):        
        return Cat2
    else:
        return Cat1

df['Cat1'] = df.apply(lambda x: is_missing(x['Cat1'],x['Cat2']),axis=1)
0
ответ дан sparrow 20 August 2018 в 18:34
поделиться
Другие вопросы по тегам:

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