【发布时间】:2015-08-22 07:24:53
【问题描述】:
我有一个 CSV 文件,其中一列看起来像一个 numpy 数组。前几行如下所示
first,second,third
170.0,2,[19 234 376]
170.0,3,[19 23 23]
162.0,4,[1 2 3]
162.0,5,[1 3 4]
当我使用 pandas 数据框并使用以下代码加载此 CSV 时
data = pd.read_csv('myfile.csv', converters = {'first': np.float64, 'second': np.int64, 'third': np.array})
现在,我想根据“第一”列进行分组,并合并“第三”列。所以在这样做之后,我的数据框应该看起来像
170.0, [19 23 234 376]
162.0, [1 2 3 4]
我如何实现这一目标?我尝试了以下多种方法,但似乎无助于实现这一目标。
group_data = data.groupby('first')
group_data['third'].apply(lambda x: np.unique(np.concatenate(x)))
【问题讨论】:
-
你确定你的第二列是一个 np 数组吗?当我运行你的代码时,我得到
object作为dtype,这表明它实际上是一个字符串。你能发布data.info()和data['second'].iloc[0]的输出吗 -
是的,你是对的,它是作为对象加载的。下面是它的样子
Int64Index:4 个条目,0 到 3 个数据列(共 2 列):前 4 个非空 float64 第二个 4 个非空对象dtypes: float64(1), object(1)
如何将它们加载为 numpy 数组? -
试试这个:
data = pd.read_csv('myfile.csv', header=None, names=['first','second'], converters = {'first': np.float64, 'second': np.array})您的代码的问题是您的文件没有任何标题名称,因此您的转换器将找不到匹配项 -
对不起!我已经更正了原来的问题。我的文件确实将列名作为第一行。
-
你有不一致的分隔符,有些行有空格,有些行没有空格,还有逗号,这是正确的吗?