这是我的数据框:
import pandas as pd
import numpy as np
df = pd.DataFrame(
{
'p': ['short', np.nan, 'short', np.nan, np.nan, 'long', 'long', np.nan, np.nan],
's': [13, 13, 14, 15, 100, 1, 1000, 12, 1111]
}
)
我想在Excel中将其他组(甚至组)的背景 colored颜色 更改为不同的 colored颜色 .
这就是我在Excel中想要的:
这些组是基于p
来定义的.这是一个以p
为单位的值,它下面的所有NaN
个值是一个组.这一点在上图中很清楚.
这就是我试过的方法,但没有奏效:
from matplotlib import colors
def colr(x):
y = x.assign(k=x['p'].ne(x['p'].shift()).cumsum())
d = dict(enumerate(colors.cnames))
y[:] = np.broadcast_to(y['k'].map(d).radd('background-color:').to_numpy()[:,None]
,y.shape)
return y.drop("k",1)
df = df.style.apply(colr,axis=None)
df.to_excel('file.xlsx', index=False, engine='openpyxl')