【问题标题】:reshape pandas column to allow sum instead of all values重塑熊猫列以允许总和而不是所有值
【发布时间】:2025-11-30 20:15:02
【问题描述】:

我有一个包含 10 列的数据框,可以成功加载到分类器中。现在我正在尝试加载列的总和,而不是所有 10 列。

previous_games_stats = pd.read_csv('stats/2016-2017 CANUCKS STATS.csv', header=1)
numGamesToLookBack = 10;

X = previous_games_stats[['GF', 'GA']]

X = X[0:numGamesToLookBack] #num games to look back
stats_feature_names = list(X.columns.values)

totals = pd.DataFrame(X, columns=stats_feature_names)

y = previous_games_stats['Unnamed: 7'] #outcome variable (win/loss)
y = y[numGamesToLookBack+1]

df = pd.DataFrame(iris.data, columns=iris.feature_names)
stats_df = pd.DataFrame(X, columns=stats_feature_names).sum()

最后一行(末尾带有.sum())导致stats_df 的格式如下:

   GF  GA
0   2   1
1   4   3
2   2   1
3   2   1
4   3   4
5   2   4
6   0   3
7   0   2
8   2   5
9   0   3

到:

GF    17
GA    27

但我想保持相同的格式,所以最终的结果应该是这样的:

    GF    GA
0   17    27

由于它正在重新格式化,我收到以下错误:

IndexError: boolean index did not match indexed array along dimension 0; dimension is 4 but corresponding boolean dimension is 3

如何使格式保持不变?

【问题讨论】:

    标签: python pandas scikit-learn


    【解决方案1】:

    如果将sum 调用到DataFrame,则得到Series。对于一行DataFrame,请使用:

    stats_df = pd.DataFrame(X, columns=stats_feature_names).sum().to_frame().T
    

    另一种解决方案:

    df1 = pd.DataFrame(X, columns=stats_feature_names)
    stats_df = pd.DataFrame([df1.sum().values], columns=df.columns)
    

    【讨论】: