我有两个数据帧,如下所示:
XYZ
Year Quantity Car Colour
2001 1000 Swift Red
2001 16 Wagonar White
2001 16 Wagonar Black
2001 200 Baleno Silver
2001 20 Zen White
ABC
Year Quantity Car Colour
2001 1000 Swift Red
2001 16 Wagonar White
2001 200 Baleno Silver
2001 44 Alto Blue
输出应该是这样的:
Year Quantity Car Colour
XYZ ABC XYZ ABC XYZ ABC XYZ ABC
2001 2001 1000 100 Swift Swift Red Red
2001 2001 16 16 Wagonar Wagonar White White
2001 2001 16 Wagonar Black
2001 2001 200 200 Baleno Baleno Silver Silver
2001 2001 20 Zen White
2001 2001 44 Alto Blue
我试过这个
df_all = pd.concat([df_temp, df_temp1], axis='columns', keys=['XYZ', 'ABC'])
print(df_all)
df_final = df_all.swaplevel(axis='columns')[df_temp.columns]
print(df_final)
def highlight_diff(data, color='yellow'):
attr = 'background-color: {}'.format(color)
other = data.xs('First', axis='columns', level=-1)
return pd.DataFrame(np.where(data.ne(other, level=0), attr,''),index=data.index, columns=data.columns)
df_final.style.apply(highlight_diff, axis=None)
print(df_final)
应突出显示数据帧之间的差异。你知道吗
例如,在本例中,必须突出显示汽车:Wagonar Zen和Alto,因为它们在两个数据帧中是不同的
我尝试了这种连接方式:
YEAR Quantity CAR COLOR car color
0 2001 16 Wagonar white Wagonar white
1 2001 16 Wagonar black Wagonar white
2 2001 20 Zen white NaN NaN
3 2001 44 NaN NaN Alto blue
4 2001 200 Baleno silver Baleno silver
5 2001 1000 Swift red Swift red
所有大写标题属于xyz公司,小标题属于abc公司 如何比较“CAR”列和“CAR”列,以及“COLOR”列和“COLOR”列,并突出显示值不匹配的整行。你知道吗
我试过:
def highlight_rows(s):
if not (s['CAR'] == s['car'] and s['COLOR'] == s['color']):
return 'background-color: green'
df_final.style.apply(highlight_rows, axis = None)
但这行不通
重复对
Year
和Quantity
存在问题,因此可能的解决方案是在concat
之前使用计数器创建唯一的MultiIndex
:然后再将
index
转换成DataFrame
和concat
再转换成MultiIndex
:最后添加新掩码并按位或组合-
|
:相关问题 更多 >
编程相关推荐