我正在使用Pandas解析多个csv文件,并将它们串联到一个大数据框中。然后,我要<div class="BigContainer">
<div class="MainListContainer">
<ul class="MainList">
<li class="MainListItem">List Option A</li>
<li class="MainListItem selected">List Option B</li>
<li class="MainListItem">List Option C</li>
</ul>
</div>
<div class="SubListContainer">
<ul class="SubList">
<li class="SubListItem">Sub-Option 1</li>
<li class="SubListItem">Sub-Option 2</li>
<li class="SubListItem">Sub-Option 3</li>
<li class="SubListItem">Sub-Option 4</li>
<li class="SubListItem">Sub-Option 5</li>
</ul>
</div>
</div>
并计算groupby
。
这是一个示例数据框:
mean()
df1.head()
Time Node Packets
0 1 0 0
2 1 1 0
4 1 2 0
6 1 3 0
8 1 4 0
df1.info(verbose=True)
然后我将它们连接起来(为简单起见,将三个数据帧连接起来)
<class 'pandas.core.frame.DataFrame'>
Int64Index: 27972 entries, 0 to 55942
Data columns (total 3 columns):
Time 27972 non-null int64
Node 27972 non-null int64
Packets 27972 non-null int64
dtypes: int64(3)
memory usage: 874.1 KB
None
df_total = pd.concat([df1, df2, df3])
产生
df_total.info(verbose=True)
最后,我尝试:
<class 'pandas.core.frame.DataFrame'>
Int64Index: 83916 entries, 0 to 55942
Data columns (total 3 columns):
Time 83916 non-null object
Node 83916 non-null object
Packets 83916 non-null object
dtypes: object(3)
memory usage: 2.6+ MB
None
,这就是错误df_total = df_total.groupby(['Time'])['Packets'].mean()
出现的地方。
虽然我从诸如this之类的其他帖子中了解到,熊猫人由于pandas.core.base.DataError: No numeric types to aggregate
而改变了dtype
,但我无法用建议的解决方案解决问题。
我该如何解决?
答案 0 :(得分:1)
我发现另一个post提到必须使用dtype初始化数据帧,否则它们的类型为object
Did you initialize an empty DataFrame first and then filled it? If so that's probably
why it changed with the new version as before 0.9 empty DataFrames were initialized
to float type but now they are of object type. If so you can change the
initialization to DataFrame(dtype=float).
所以我在代码中添加了df_total = pd.DataFrame(columns=['Time', 'Node', 'Packets'], dtype=int)
,它可以正常工作。
答案 1 :(得分:0)
df_total.info(verbose=True)
您的这条语句将info作为对象,因此在连接中存在问题,每个值都不是int,因此对象的均值是不可能的。