Pandas Dataframe 中多列的返回值频率,python

Returning Value Frequency from Multiple Columns in Pandas Dataframe, python

我正在使用一个 pandas 数据框,该数据框有多个列填充了来自同一组的值,类似于此:

Name First Car Second Car Third Car Fourth Car
Tom VW Ford Honda Audi
Tim BMW Honda Audi Ford
Sam Audi Honda Honda Audi
Bill Ford Ford null Audi
Mark VW Ford Honda null

我需要把它变成这样:

Make First Car Second Car Third Car Fourth Car
VW 2 0 0 0
Ford 1 3 0 1
Honda 0 2 3 0
Audi 1 0 1 3
BMW 1 0 0 0

这似乎可以通过多列 groupby 或交叉表来实现,但我不太清楚如何实现。我假设 pandas 有一些不错的技巧可以做到这一点,而无需诉诸遍历每一列(我刚刚开始使用 pandas)?

一些进一步的上下文以防它影响解决方案 - 一旦我重组了信息,我需要使用 matplotlib 将其绘制为堆叠条形图,这样我就可以使用 matplotlib 的 savefig() 函数以编程方式保存视觉对象。

Select 您想要的列,然后将 .value_counts 应用于它们,例如:

df.filter(regex=f'Car$').apply(pd.value_counts)

这会给你:

       First Car  Second Car  Third Car  Fourth Car
Audi         1.0         NaN        1.0         3.0
BMW          1.0         NaN        NaN         NaN
Ford         1.0         3.0        NaN         1.0
Honda        NaN         2.0        3.0         NaN
VW           2.0         NaN        NaN         NaN