python - 有没有办法将 colorsys.rgb_to_hsv 应用于熊猫数据框?
问题描述
我有一个 csv 文件,其中三个不同的列中包含 rgb 颜色值,我想使用 colorsys 将其转换为 hsv。
我首先尝试的代码将 rgb 值除以 255 以获得 0-1 之间的值,然后我尝试为 colorsys.rgb_to_hsv 创建变量,以针对正确列中的值。显示:
import colorsys
import pandas as pd
import numpy as np
index=["R", "G", "B"]
data = pd.read_csv('shirtstesting.csv', names=index, header=None)
df = pd.DataFrame(data)
df /= 255
print(df)
R = df["R"]
G = df["G"]
B = df["B"]
hsv = colorsys.rgb_to_hsv(R, G, B)
hsvarray = []
for x in df[['R', 'G', 'B']]:
hsv = colorsys.rgb_to_hsv(R, G, B)
hsvarray.append(hsv)
print(hsvarray)
但是我得到一个错误,说一个系列的真值是模棱两可的。我认为问题在于我给出了一个系列,所以我使用以下代码将系列转换为列表:
import colorsys
import pandas as pd
import numpy as np
index=["R", "G", "B"]
data = pd.read_csv('shirtstesting.csv', names=index, header=None)
df = pd.DataFrame(data)
df /= 255
print(df)
R = df["R"]
G = df["G"]
B = df["B"]
l_1d = R.values.tolist()
l_2d = G.values.tolist()
l_3d = B.values.tolist()
hsv = colorsys.rgb_to_hsv(l_1d, l_2d, l_3d)
hsvarray = []
for x in df[['R', 'G', 'B']]:
hsv = colorsys.rgb_to_hsv(R, G, B)
hsvarray.append(hsv)
print(hsvarray)
现在它返回的错误是列表和列表不支持的操作数类型。
不知道现在该尝试什么。任何帮助表示赞赏。谢谢!
解决方案
尝试:
hsv_df = df[['R','G','B']].apply(lambda x: colorsys.rgb_to_hsv(*x), axis=1)
或者
hsv_arr = [colorsys.rgb_to_hsv(r,g,b) for _, (r,g,b) in df[['R','G','B']].iterrows()]
推荐阅读
- visual-studio-2010 - 参数不正确。(来自 HRESULT 的异常:0x80070057 (E_INVALIDARG)))
- aws-lambda - 在无服务器框架中创建可用于 Lambda 函数的 RDS 实例
- django - 535,b'django项目发送邮件时验证数据不正确
- vscode-settings - 如何在 VScode 中设置默认的“S”和“s”vim 插件键映射?
- python - python运行其他python文件
- bash - 从 shell 脚本中的文件读取时缺少字符
- sql - SQL 日期格式 - 从日期字段开始计算天数
- javascript - 如何使用一个滑块角度同步搜索多个视频
- javascript - jquery简单隐藏显示基于复选框选中
- github - 无法 fork 个人 github 存储库