Почему я получаю Оператор - не определено для типа (ов) аргумента

Альтаир может быть полезен здесь.

Импорт

import pandas as pd
import numpy as np
from altair import *

Создание набора данных

df1=pd.DataFrame(10*np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])
df2=pd.DataFrame(10*np.random.rand(4,2),index=["A","B","C","D"],columns=["I","J"])

Подготовка набора данных

def prep_df(df, name):
    df = df.stack().reset_index()
    df.columns = ['c1', 'c2', 'values']
    df['DF'] = name
    return df

df1 = prep_df(df1, 'DF1')
df2 = prep_df(df2, 'DF2')

df = pd.concat([df1, df2])

Задание Altair

Chart(df).mark_bar().encode(y=Y('values', axis=Axis(grid=False)),
                            x='c2:N', 
                            column=Column('c1:N') ,
                            color='DF:N').configure_facet_cell( strokeWidth=0.0).configure_cell(width=200, height=200)

1
задан ernest_k 25 March 2019 в 15:19
поделиться

2 ответа

Более простой подход для определения Comparator в Java 8+:

Comparator.comparing(Employee::getName).thenComparing(Employee::getSalary)
0
ответ дан Andy Turner 25 March 2019 в 15:19
поделиться

Спецификация языка Java ( JLS ) описывает применимость оператора - для арифметических операций:

15.18. Аддитивные операторы

В каждом случае тип каждого из операндов бинарного оператора должен быть типом, который можно преобразовать ( §5.1.8 ) в примитивный числовой тип или ошибка времени компиляции.

Тип BigDecimal не является ни примитивным числовым типом (таким как int, short, float, double), ни конвертируемым в единицу. Напротив, хотя Integer, Float, Double и Short также не являются примитивными числовыми типами, для них определен оператор -, так как они могут быть преобразованы в их примитивные аналоги ( JLS- 5.1.8 ).

Как уже указывалось в других ответах, используйте BigDecimal.compareTo (BigDecimal) для сравнения BigDecimal экземпляров.

0
ответ дан thokuest 25 March 2019 в 15:19
поделиться
Другие вопросы по тегам:

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