pandas groupby 删除列
pandas groupby dropping columns
我正在通过操作进行简单的分组,尝试比较分组均值。正如您在下面看到的,我从一个更大的数据框中选择了特定的列,所有缺失值都已从中删除。
但是当我分组时,我丢失了几列:
我从未在 pandas 中遇到过这种情况,而且我在堆栈溢出上也没有发现任何其他类似的东西。有人有什么见解吗?
我认为是Automatic exclusion of 'nuisance' columns
,描述的是here。
样本:
df = pd.DataFrame({'C': {0: -0.91985400000000006, 1: -0.042379, 2: 1.2476419999999999, 3: -0.00992, 4: 0.290213, 5: 0.49576700000000001, 6: 0.36294899999999997, 7: 1.548106}, 'A': {0: 'foo', 1: 'bar', 2: 'foo', 3: 'bar', 4: 'foo', 5: 'bar', 6: 'foo', 7: 'foo'}, 'B': {0: 'one', 1: 'one', 2: 'two', 3: 'three', 4: 'two', 5: 'two', 6: 'one', 7: 'three'}, 'D': {0: -1.131345, 1: -0.089328999999999992, 2: 0.33786300000000002, 3: -0.94586700000000001, 4: -0.93213199999999996, 5: 1.9560299999999999, 6: 0.017587000000000002, 7: -0.016691999999999999}})
print (df)
A B C D
0 foo one -0.919854 -1.131345
1 bar one -0.042379 -0.089329
2 foo two 1.247642 0.337863
3 bar three -0.009920 -0.945867
4 foo two 0.290213 -0.932132
5 bar two 0.495767 1.956030
6 foo one 0.362949 0.017587
7 foo three 1.548106 -0.016692
print( df.groupby('A').mean())
C D
A
bar 0.147823 0.306945
foo 0.505811 -0.344944
我想你可以检查一下 DataFrame.dtypes
。
尝试df.groupby(['col_1', 'col_2'], as_index=False).mean()
。
使用 as_index=False
保留列名。默认为真。上面的评论已经回答了这个问题,但将其作为答案发布。
确保您的专栏采用 numeric/int 格式,而不是例如作为 'O' 作为对象格式。
这是它让我失望的原因之一。
您可以通过下面的hte代码检查列的格式:
df.column.dtypes
我正在通过操作进行简单的分组,尝试比较分组均值。正如您在下面看到的,我从一个更大的数据框中选择了特定的列,所有缺失值都已从中删除。
但是当我分组时,我丢失了几列:
我从未在 pandas 中遇到过这种情况,而且我在堆栈溢出上也没有发现任何其他类似的东西。有人有什么见解吗?
我认为是Automatic exclusion of 'nuisance' columns
,描述的是here。
样本:
df = pd.DataFrame({'C': {0: -0.91985400000000006, 1: -0.042379, 2: 1.2476419999999999, 3: -0.00992, 4: 0.290213, 5: 0.49576700000000001, 6: 0.36294899999999997, 7: 1.548106}, 'A': {0: 'foo', 1: 'bar', 2: 'foo', 3: 'bar', 4: 'foo', 5: 'bar', 6: 'foo', 7: 'foo'}, 'B': {0: 'one', 1: 'one', 2: 'two', 3: 'three', 4: 'two', 5: 'two', 6: 'one', 7: 'three'}, 'D': {0: -1.131345, 1: -0.089328999999999992, 2: 0.33786300000000002, 3: -0.94586700000000001, 4: -0.93213199999999996, 5: 1.9560299999999999, 6: 0.017587000000000002, 7: -0.016691999999999999}})
print (df)
A B C D
0 foo one -0.919854 -1.131345
1 bar one -0.042379 -0.089329
2 foo two 1.247642 0.337863
3 bar three -0.009920 -0.945867
4 foo two 0.290213 -0.932132
5 bar two 0.495767 1.956030
6 foo one 0.362949 0.017587
7 foo three 1.548106 -0.016692
print( df.groupby('A').mean())
C D
A
bar 0.147823 0.306945
foo 0.505811 -0.344944
我想你可以检查一下 DataFrame.dtypes
。
尝试df.groupby(['col_1', 'col_2'], as_index=False).mean()
。
使用 as_index=False
保留列名。默认为真。上面的评论已经回答了这个问题,但将其作为答案发布。
确保您的专栏采用 numeric/int 格式,而不是例如作为 'O' 作为对象格式。 这是它让我失望的原因之一。
您可以通过下面的hte代码检查列的格式:
df.column.dtypes