Альтаир может быть полезен здесь.
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])
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)
Более простой подход для определения Comparator
в Java 8+:
Comparator.comparing(Employee::getName).thenComparing(Employee::getSalary)
Спецификация языка Java ( JLS ) описывает применимость оператора -
для арифметических операций:
В каждом случае тип каждого из операндов бинарного оператора должен быть типом, который можно преобразовать ( §5.1.8 ) в примитивный числовой тип или ошибка времени компиляции.
blockquote>Тип
BigDecimal
не является ни примитивным числовым типом (таким какint
,short
,float
,double
), ни конвертируемым в единицу. Напротив, хотяInteger
,Float
,Double
иShort
также не являются примитивными числовыми типами, для них определен оператор-
, так как они могут быть преобразованы в их примитивные аналоги ( JLS- 5.1.8 ).Как уже указывалось в других ответах, используйте BigDecimal.compareTo (BigDecimal) для сравнения
BigDecimal
экземпляров.