我有以下数据框(例如)
Value
Sample_A_1 5
Sample_B 1
Sample_A_2 2
Sample_D 3
Sample_F 4
并希望运行df['Value'].plot(kind='bar')
如果我想在索引字符串包含Sample_A
时为条形定义颜色,并为其他样本定义其他颜色,我该怎么做?
答案 0 :(得分:3)
想法是创建字典,用于通过包含索引的值指定颜色,然后是extract
值和map
,添加fillna
来指定默认颜色(如果没有值匹配),最后传递给参数color
:
colors = {'Sample_A': 'r', 'Sample_B': 'b', 'Sample_D': 'g'}
pat = (r'({})'.format('|'.join(colors.keys())))
c = df.index.str.extract(pat,expand=False).map(colors.get).fillna('y')
df['Value'].plot(kind='bar', color=c)
另一种解决方案是通过用str.contains
按字典循环来为颜色添加新列:
for k, v in colors.items():
df.loc[df.index.str.contains(k), 'color'] = v
print (df)
Value color
Sample_A_1 5 r
Sample_B 1 b
Sample_A_2 2 r
Sample_D 3 g
Sample_F 4 NaN
df['Value'].plot(kind='bar', color=df['color'].fillna('y'))