замените любые строки на nan в панде - PullRequest
0 голосов
/ 06 декабря 2018

Я новичок в пандах и концепции dataframe.Из-за формата моих данных (Excel-листы, первая строка - это имя моих данных, вторая строка - это единица измерения) обрабатывать их во фрейме данных немного сложно.Задача состоит в том, чтобы вычислить новые данные из существующих столбцов, например, df.['c'] = df['a']**2 + df.['b'] Я получаю: TypeError: неподдерживаемые типы операндов для ** или pow (): 'str' и 'int'

Это сработало, но боль в моих руках и глазах:

df.['c'] = df['a']
df.['c'] = df['a'].tail(len(df.['a']-1))**2 + df.['b'].tail(len(df.['b'])-1)
df.loc[0,'c'] = 'unit for c'

Есть ли способ сделать это быстрее или с меньшим набором текста?Спасибо уже schamonn

Ответы [ 2 ]

0 голосов
/ 06 декабря 2018

Давайте рассмотрим ошибку, упомянутую первой в этом сообщении.

TypeError: неподдерживаемые типы операндов для ** или pow (): 'str' и 'int'

Что означает эта ошибка, которую вы пытаетесь принять и привести к власти, мы можем воспроизвести эту ошибку, используя следующий пример:

df = pd.DataFrame({'a':['1','2','3'],'b':[4,5,6]})

df['a']**2

Вывести последнюю строку трассировки стека:

TypeError: unsupported operand type(s) for ** or pow(): 'str' and 'int'

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

pd.to_numeric(df['a'])**2

Вывод:

0    1
1    4
2    9
Name: a, dtype: int64

Получил не-числовые строки также в столбце a?

Использование errors = 'coerce' в качестве параметра для pd.to_numeric

df = pd.DataFrame({'a':['a','1','2','3'],'b':[4,5,6,7]})

Использование:

pd.to_numeric(df['a'], errors='coerce')**2

Вывод:

0    NaN
1    1.0
2    4.0
3    9.0
Name: a, dtype: float64
0 голосов
/ 06 декабря 2018

вот как я читаю в данных

Data = pd.read_excel(fileName, sheet_name = 'Messung')
In [154]: Data
Out[154]: 
   T1   T2 Messung                Datum
0  °C   °C       -                    -
1  12  100       1  2018-12-06 00:00:00
2  15  200       2  2018-12-06 00:00:00
3  20  120       3  2018-12-06 00:00:00
4  10  160       4  2018-12-06 00:00:00
5  12  160       5  2018-12-06 00:00:00
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...