Python 如何基于groupby对象中的组大小生成内置if条件
这个问题可能很简单,但我就是不知道怎么做。 我有一个按列分组的数据帧。我想绘制每个组,但前提是其大小大于2Python 如何基于groupby对象中的组大小生成内置if条件,python,if-statement,pandas,group-by,Python,If Statement,Pandas,Group By,这个问题可能很简单,但我就是不知道怎么做。 我有一个按列分组的数据帧。我想绘制每个组,但前提是其大小大于2 Here is my code: df1=df.groupby('Origin') import matplotlib.pyplot as plt for key, group in df1: plt.figure() group.plot(x='xColumnr', y='yColumn', title=str(key)) 我尝试使用df2=df1.
Here is my code:
df1=df.groupby('Origin')
import matplotlib.pyplot as plt
for key, group in df1:
plt.figure()
group.plot(x='xColumnr', y='yColumn', title=str(key))
我尝试使用df2=df1.filter(lambda group:group.size()>2)
过滤掉这些组,并在代码中设置df2代替df1,但这会导致错误TypeError:'numpy.int32'对象不可调用。
然后我试着
df3=df1.size()
if df3[df3 > 2]:
plot stuff
这会引发异常“缺少True和False列”。
如何在if条件下构建,以仅打印大小大于2的组 您应该能够遍历数据集并确定组是否有足够的数据:
import pandas as pd
import matplotlib.pyplot as plt
names = ['Bob','Jessica','Mary','John','Mel']
zipcode = [100, 100, 77, 77, 973]
weight = [100, 200, 300, 400, 500]
BabyDataSet = zip(names,zipcode, weight)
df = pd.DataFrame(data = BabyDataSet, columns=['Name', 'Zipcode', 'Weight'])
grouped = df.groupby(df.Zipcode)
for key, group in grouped:
entries = group.size
columns = len(group.columns)
if entries/columns >= 2:
plt.figure()
group.plot(x='Zipcode', y='Weight', title=str(key))
不过,也许还有更好的方法
受group.size()
启发的示例应该是group.size
,它是一个属性而不是一个方法。很好,很有效!但是我不明白为什么需要columns=len(group.columns)
,你能解释一下吗?谢谢那条线没有必要。你也可以直接使用len(group.columns)
。它只是为了更好的可读性。