【发布时间】:2019-02-26 05:59:45
【问题描述】:
我有两个数据框如下:
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)
应突出显示数据框之间的差异。
例如,在这种情况下,必须突出显示 Cars: 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)
但这不起作用
【问题讨论】:
标签: python python-3.x pandas dataframe