首页 > 解决方案 > 从熊猫中的红色列,绿色列和蓝色列创建十六进制列

问题描述

我有一个包含 16,777,216 行的熊猫数据框。这是 0 到 255(含)之间的三列(红色、绿色和蓝色)的所有可能组合。

我想在这个数据框中添加一列,它是行的三个值的十六进制代码。我认为像下面这样的东西是最好的解决方案:

df["Hex"] = "#{0:02x}{1:02x}{2:02x}".format(df["Red"],df["Green"],df["Blue"])

但是,您似乎无法将系列传递给字符串格式方法。

有没有办法解决这个问题?此外,鉴于数据框相当大,这是否是最有效的方法?

标签: pythonpandashexrgb

解决方案


您可以使用.apply,例如:

df = pd.DataFrame(np.random.randint(256, size=(10, 3)), columns=['Red', 'Green', 'Blue'])

例如:

   Red  Green  Blue
0  125    100   174
1  107    247   235
2  230    254    33
3   91    107    33
4  209    220   232
5  175     10    47
6  120     66    44
7   21    136   254
8  226    237    32
9   89     57    71

然后:

df.apply('#{Red:02X}{Green:02X}{Blue:02X}'.format_map, axis=1)

给你:

0    #7D64AE
1    #6BF7EB
2    #E6FE21
3    #5B6B21
4    #D1DCE8
5    #AF0A2F
6    #78422C
7    #1588FE
8    #E2ED20
9    #593947
dtype: object

推荐阅读