Добавляйте один фрейм данных за другим, но увеличивайте индекс - PullRequest
0 голосов
/ 06 августа 2020

У меня есть исходный фрейм данных и еще один, который я хотел бы добавить к первому . Однако есть столбец с идентификаторами, и я хотел бы, чтобы в него были добавлены строки фрейма данных, чтобы они увеличивались с самого высокого QID первого фрейма данных. Я знаю, как добавлять один фрейм данных за другим. Имена столбцов второго включены в первый.

df_qb.append(dfgrouped)

До сегодняшнего дня я пытался получить максимум в столбце QID исходного фрейма данных.

# get highest QID and start the QID of the appended rows from here
max_qid = df_qb.QID.astype(dtype = int, errors = 'ignore').max()

Но это возвращает меня:

---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-92-03bff1b7ef93> in <module>
      1 # get highest QID and start the QID of the appended rows from here
----> 2 max_qid = df_qb.QID.astype(dtype = int, errors = 'ignore').max()

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\generic.py in stat_func(self, axis, skipna, level, numeric_only, **kwargs)
  11213             return self._agg_by_level(name, axis=axis, level=level, skipna=skipna)
  11214         return self._reduce(
> 11215             f, name, axis=axis, skipna=skipna, numeric_only=numeric_only
  11216         )
  11217 

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\series.py in _reduce(self, op, name, axis, skipna, numeric_only, filter_type, **kwds)
   3889                 )
   3890             with np.errstate(all="ignore"):
-> 3891                 return op(delegate, skipna=skipna, **kwds)
   3892 
   3893         # TODO(EA) dispatch to Index

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\nanops.py in f(values, axis, skipna, **kwds)
    123                     result = alt(values, axis=axis, skipna=skipna, **kwds)
    124             else:
--> 125                 result = alt(values, axis=axis, skipna=skipna, **kwds)
    126 
    127             return result

C:\ProgramData\Anaconda3\lib\site-packages\pandas\core\nanops.py in reduction(values, axis, skipna, mask)
    835                 result = np.nan
    836         else:
--> 837             result = getattr(values, meth)(axis)
    838 
    839         result = _wrap_results(result, dtype, fill_value)

C:\ProgramData\Anaconda3\lib\site-packages\numpy\core\_methods.py in _amax(a, axis, out, keepdims, initial, where)
     28 def _amax(a, axis=None, out=None, keepdims=False,
     29           initial=_NoValue, where=True):
---> 30     return umr_maximum(a, axis, None, out, keepdims, initial, where)
     31 
     32 def _amin(a, axis=None, out=None, keepdims=False,

TypeError: '>=' not supported between instances of 'str' and 'float'

1 Ответ

1 голос
/ 06 августа 2020

Если проверка Series.astype:

ошибки {'поднять', 'игнорировать'}, по умолчанию 'поднять' Управляет возбуждением исключений для недопустимых данных для предоставленного dtype.

raise: разрешить возникновение исключений игнорировать: подавлять исключения. При ошибке вернуть исходный объект .

Итак, вам нужно to_numeric с errors = 'coerce' для преобразования значений в числа:

max_qid = pd.to_numeric(df_qb.QID, errors = 'coerce').max()
dfgrouped['QID'] = np.arange(max_qid + 1, max_qid + len(dfgrouped) + 1)

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