我希望对df中的列进行分组,而我不得不看一下这篇文章pandas groupby dropping columns,因为在我的情况下,当group_by()。mean()时,我也丢失了列,因此我尝试执行
df.groupby("A", as_index=False).mean()
和一个
df.groupby('A').mean().reset_index()
然后我检查了df中的列,发现其中3列是对象类型,
df.types
我遇到的问题是我无法将列类型从object更改为float64(顺便说一下,groupby之后消失的列
我试图更改列的方式是:
df['A']=df['A'].astype(float)
df['A']=df['A'].astype(np.float64)
df.convert_objects(convert_numeric=True)
pd.to_numeric(df, errors='coerce')
但也没有起作用
但是列仍然是对象类型。
用列的dtypes复制我的df很复杂,但是我将发布用于这种情况的df。
我的df:
df=pd.DataFrame(data=np.transpose([[1.014e-7,0,3,1.014e-7],[2,4,6,8],[1,1,1,1],[5,5,5,8]]),index=['x','y','w','z'],columns=['A','B','C','D'])
答案 0 :(得分:1)
您的代码实际上对我来说很好用(Python版本3.6)。尝试检查您的Python版本:
import sys
print(sys.version) # Python 3.6.2
如果将所有列都转换为浮点数,请尝试使用:
df = df.apply(np.float64)
df.dtypes
您应该最终得到:
A float64
B float64
C float64
D float64
答案 1 :(得分:0)
pd.to_numeric(df, errors='coerce')
需要像这样分配:
df = pd.to_numeric(df, errors='coerce')
现在应将列中的所有字符串替换为“ NaN”,从而使df.groupby("A", as_index=False).mean()
成为可能。