【发布时间】:2020-07-05 19:23:34
【问题描述】:
我想编写一个函数,其中可以将多个数据帧作为 *args 传递以绘制一些图。是这样的:
def f_plot (*args):
p = None
if args == df1:
...plot rules for df1...
p = plot.show()
elif args == df2:
...plot rules for df2...
p = plot.show()
else:
raise ValueError("No *args were passed!!!)
return p
顺便说一句,我收到以下错误:
ValueError: The truth value of a DataFrame is ambiguous. Use a.empty(), a.bool(), a.item(), a.any() or a.all().
这些是简化的 df 示例:
df1 = {'home': [A,B,C,D,E], 'away': [F,G,H,I,J], 'score_in': [2,1,3,2,0], 'score_out': [1,3,1,0,2], ‘competition’: [highschool, university, highschool, university, MLS, university]}
df2=df1.groupby('competition').get_group('university')
对于这个例子,我想创建,如果 arg 等于 df1,在同一个图中关于分数的 n 个子图,其中 n 是比赛,而如果 arg 等于可能的 df2 之一,则单个图与以往不同。
有什么帮助吗?
【问题讨论】:
-
请发布整个堆栈帧,以便我们知道哪一行有错误。我们不必猜测。
-
...但无论如何猜测,在
if args == df1中,args是一个元组。我不知道df1是什么,大概是一个数据框?首先,它不是一个元组,pandas在您尝试将数据框设置为真或假时会生气。正如它所说,它模棱两可。也许a.empty(), a.bool(), a.item(), a.any() or a.all()。这是个好建议! -
我没有得到 a.empty()、a.bool()、a.item()、a.any() 或 a.all():我有什么方法可以设置如果我的函数中的条件避免 True 或 False?当然,df1 等等都是我在上面写的数据框。
-
当然,您说 args 是数据帧,并没有提到 df1 和 df2 是什么。在您的代码中,
df1很容易成为数据帧的元组,如“数据帧集合 1”。由于 args 是一个元组,因此将其与另一个元组进行比较并将多个数据帧放在一个图上是合理的。 -
一个数据框可以有多个值和多种方式来决定真实性。是不是因为它不为空,df 中的至少一个值是真的,df 中的所有值都是真的?这就是你必须指定的原因。
标签: python pandas function dataframe