我的数据是包含零售商品及其销售业绩的数据框架。栏目包括:2016年单位销售额,2015年单位销售额,项目描述等。当我尝试为品牌进行分组时:
Data.groupby(by="Major Brand").sum()
我收到以下错误:TypeError: unorderable types: int() < str()
我认为这是因为并非DataFrame中的所有数据都是数字,因此pandas不知道如何总结#39;
但我可以使用以下内容获得个人群组:
Data.groupby(by="Major Brand")["2016 Units"].sum()
最终,我只想按照#34; Major Brand&#34;并比较&#34; 2016年单位&#34;到&#34; 2015年单位&#34;并将所有这三个放入一个新的DataFrame中,使用&#34; Major Brand&#34;作为索引。
我曾尝试将我的多个群组合并在一起,但这似乎永远不会奏效。
谢谢!
答案 0 :(得分:2)
你可以这样做:
Data.groupby(by="Major Brand")["2016 Units","2015 Units"].sum()
演示:
In [29]: Data.groupby(by="Major Brand")["2016 Units","2015 Units"].sum()
Out[29]:
2016 Units 2015 Units
Major Brand
1 218 238
2 172 122
3 192 273
4 176 172
数据:
In [30]: Data
Out[30]:
Major Brand 2016 Units 2015 Units X
0 1 75 83 xxx
1 1 82 95 xxx
2 3 85 47 xxx
3 3 1 40 xxx
4 1 43 43 xxx
5 4 35 65 xxx
6 3 38 71 xxx
7 4 56 90 xxx
8 3 9 77 xxx
9 1 18 17 xxx
10 3 59 38 xxx
11 4 85 17 xxx
12 2 64 13 xxx
13 2 32 33 xxx
14 2 76 76 xxx
答案 1 :(得分:1)
我收到以下错误:TypeError:unorderable types:int()&lt; STR()
难道你的dtypes不正确吗?例如str。而不是int? 您可以尝试使用以下内容创建数据框:
using namespace testing;
TEST(Fundus_Mask_Creation, FAILS_FOR_TWO_CHANNEL_IMAGES) {
// create image with two channels
cv::Mat img( ... );
GlogWrapperMock glogMock;
Retina::Preprocessing::setLogger(&glogMock);
std::string expectedMessage = "Number of image channels found = 2. Terminating Now!!";
EXPECT_CALL(glogMock, LogIf(ERROR, _, expectedMessage).WillOnce(Return());
cv::Mat* mask = Retina::Preprocessing::create_mask(&img);
// Make additional assertions if necessary
...
}