【发布时间】:2018-12-29 00:40:52
【问题描述】:
我是 Python 的超级初学者。长话短说,我想用一列分组,将一个函数应用于一列,将另一个函数应用于另一列,然后绘制结果(第一列到 x 轴,第二列到 y 轴)。
我有一个熊猫数据框df,其中包含许多列。其中两列是tour_id 和tour_distance。
tour_id tour_distance
A 10
A 10
A 10
A 10
B 20
B 20
C 40
C 40
C 40
C 40
C 40
: :
: :
由于我假设 tour_distance 越长,每个 tour_id 的行数越多,我想绘制 tour_distance 与每组 tour_id 中的行数的直方图。
问题 1:这个 groupby 和 plot 问题最简单的解决方案是什么?
问题 2:如何改进我失败的尝试?
我的尝试:我认为制作这样的新数据框会更容易。
tour_id tour_distance row_counts
A 10 3
B 20 2
C 40 5
: : :
这样我可以使用matplotlib 并这样做,
import matplotlib.pyplot as plt
x = df.tour_distance
y = df.row_counts
plt.bar(x,y)
但是,我无法制作这个数据框。
df_tour_distance = df.groupby('tour_id').tour_distance.head(1)
df_tour_distance = pd.DataFrame(df_tour_distance)
df_size = df.groupby('tour_id').tour_distance.size()
df_size = pd.DataFrame(df_size)
df = pd.merge(df_size, df_tour_distance, on='tour_id')
>>> KeyError: 'tour_id'
这也失败了:
g = df.groupby('tour_id')
result = g.agg({'Count':lambda x:x.size(),
'tour_distance_grouped':lambda x:x.head(1)})
result
>>> KeyError: 'Count'
【问题讨论】:
-
请检查您的拼写;-)
标签: python pandas group-by histogram