如何使用 Pandas iterrows 修复 ValueError
How to fix ValueError with Pandas iterrows
我正在尝试编写一个函数,在给定 PD 列和图例标签列表的情况下生成条形图。我有经过数字编码的分类数据,因此默认标签只是我想改回字符串值的数字。这是我的代码:
legend_labels = ["label 1", "label 2"]
def plot_percentages(col, legend_labels):
plt.figure(figsize=(7,6))
ax = sns.barplot(x="x", y="x", hue=col, data=df,
estimator=lambda x: len(x) / len(df) * 100)
ax.set(ylabel="Percentage")
plt.xticks([0, 1], ['A', "B"])
L=plt.legend()
for idx, val in pd.DataFrame(legend_labels).iterrows():
L.get_texts()[idx].set_text(val)
ax
它returns出现以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
提前感谢您就如何解决此问题提出任何建议。
解决办法是不要在这里使用 iterows()
而只是一个简单的 for 循环。
for idx, val in enumerate(legend_labels):
L.get_texts()[idx].set_text(val)
我正在尝试编写一个函数,在给定 PD 列和图例标签列表的情况下生成条形图。我有经过数字编码的分类数据,因此默认标签只是我想改回字符串值的数字。这是我的代码:
legend_labels = ["label 1", "label 2"]
def plot_percentages(col, legend_labels):
plt.figure(figsize=(7,6))
ax = sns.barplot(x="x", y="x", hue=col, data=df,
estimator=lambda x: len(x) / len(df) * 100)
ax.set(ylabel="Percentage")
plt.xticks([0, 1], ['A', "B"])
L=plt.legend()
for idx, val in pd.DataFrame(legend_labels).iterrows():
L.get_texts()[idx].set_text(val)
ax
它returns出现以下错误:
ValueError: The truth value of a Series is ambiguous. Use a.empty, a.bool(), a.item(), a.any() or a.all().
提前感谢您就如何解决此问题提出任何建议。
解决办法是不要在这里使用 iterows()
而只是一个简单的 for 循环。
for idx, val in enumerate(legend_labels):
L.get_texts()[idx].set_text(val)