我有一个pandas数据帧,有4行和4列 - 这里是简单的版本:
import pandas as pd
import numpy as np
rows = np.arange(1, 4, 1)
values = np.arange(1, 17).reshape(4,4)
df = pd.DataFrame(values, index=rows, columns=['A', 'B', 'C', 'D'])
Run Code Online (Sandbox Code Playgroud)
我想要做的是将其转换为2*8数据帧,每个数组都有B,C和D alligng - 所以它看起来像这样:
1 2
1 3
1 4
5 6
5 7
5 8
9 10
9 11
9 12
13 14
13 15
13 16
Run Code Online (Sandbox Code Playgroud)
阅读熊猫文档我试过这个:
df1 = pd.pivot_table(df, rows = ['B', 'C', 'D'], cols = 'A')
Run Code Online (Sandbox Code Playgroud)
但是给我一个错误,我无法确定来源(以...结尾)
DataError:无需聚合的数字类型
)
接下来我想基于A值拆分数据帧,但我认为.groupby命令可能会处理它
我正在使用pandas,它可以非常有效地按照我需要的方式对数据进行排序/过滤.
此代码工作正常,直到我将最后一列更改为复数; 现在我收到一个错误.
return self._cython_agg_general('mean')引发DataError('无数字类型聚合')pandas.core.groupby.DataError:没有要聚合的数字类型
错误是指我的第八列(带有复数),因为我想要平均值我无法找到将对象转换为复数的方法(从我理解的熊猫现在支持复数).
这是我使用的代码.
import numpy as np
import pandas as pd
df = pd.read_csv('final.dat', sep=",", header=None)
df.columns=['X.1', 'X.2', 'X.3', 'X.4','X.5', 'X.6', 'X.7', 'X.8']
df1 = df.groupby(["X.1","X.2","X.5"])["X.8"].mean().reset_index()
Run Code Online (Sandbox Code Playgroud)
之后我得到上述错误.
当我读取我的文件时,这是df输出.
<class 'pandas.core.frame.DataFrame'>
Int64Index: 21266 entries, 0 to 21265
Data columns (total 8 columns):
X.1 21266 non-null values
X.2 21266 non-null values
X.3 21266 non-null values
X.4 21266 non-null values
X.5 21266 non-null values
X.6 21266 non-null values
X.7 21266 non-null values
X.8 21266 non-null values
dtypes: float64(4), int64(3), …
Run Code Online (Sandbox Code Playgroud)