我有一个像这样的pandas数据框:
a b c d e f g \
0 2.689023 2.574812 86.125377 11.092565 4.939444 2.851453 1.754082
1 2.072062 2.142972 107.184461 45.948551 2.181561 3.030148 1.347777
2 2.122226 2.282065 84.648076 5.524413 12.444351 3.265505 1.487924
3 2.134716 2.059546 87.338169 2.102929 6.992658 3.124260 1.569247
4 1.394049 1.588723 52.834432 3.743313 8.523079 2.710473 1.147418
h i j k l m n \
0 1.464062 63.088607 1.920668 85.786448 37.789046 23.080176 47.276513
1 1.026195 66.002393 1.297645 103.159307 19.147647 38.081938 91.625779
2 1.544903 63.542854 1.502209 90.655852 30.597791 33.488811 46.330959
3 1.464062 99.193164 1.910971 213.842295 36.663162 20.407577 46.259227
4 1.232436 61.228213 1.542646 71.922704 28.493704 8.649692 34.185022
o p Time Dose
0 1.505346 0.786096 2小时5mg / kg
1 2.249856 0.536542 2小时5mg / kg
2 5.700618 0.307784 2小时5mg / kg
3 3.583611 0.058229 2小时5mg / kg
4 2.170392 0.411765 2小时5mg / kg
我要做的是在x轴上为所有测量变量绘制单独的图,并按剂量分组。像这样:
我可以通过使用此命令将每个变量名称逐个作为y值传递来实现此目的:
sns.factorplot(x="Time", y="a", hue="Dose", data=df2, kind="point")
然而,由于这变得乏味,我希望编写一个for循环,它只绘制具有数值的列并排除列' Time'和'剂量'。我试图使用的代码是:
for i in df2:
if df2.dtypes == float:
lineplot = sns.factorplot(x="Time", y=i, hue="Dose", data=df2,
size=6, kind="point", capsize=.2, palette="dark",
legend_out=False)
但是,我收到此错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(),
a.item(), a.any() or a.all().
我做错了什么?
答案 0 :(得分:0)
我认为您正在尝试将系列与此特定行中的单个值进行比较:
if df2.dtypes == float:
尝试将其写为:
if df2[i].dtypes == float: