我在这个问题上有点难。我已经创建了一个概念证明,我用一个静态的数字数组构建了一个Pandas数据框架。我让这个工作得很好,但是现在我更进一步,导入一个CSV文件来构建相同的Dataframe和Numpy Array。下面是文件的片段和我所写的内容。我想取第二列的“数字”并构建每行6个数字的数组。例如,[[11]、[21]、[27]、[36]、[62]、[24]]、[[14]、[18]、[36]、[49]、[67]、[18]]等。
CSV:
date,numbers,multiplier
09/26/2020,11 21 27 36 62 24,3
09/30/2020,14 18 36 49 67 18,2
10/03/2020,18 31 36 43 47 20,2
代码:
data = pd.read_csv('pbhistory.csv')
data['date'] = pd.to_datetime(data.date, infer_datetime_format=True)
data.sort_values(by='date', ascending=True, inplace=True)
df = pd.DataFrame(data.numbers).to_numpy()
df2 = pd.DataFrame(df, columns=['1', '2', '3', '4', '5', '6'])
print(df2.head())
错误:我期望df2中有6列数据,因为我认为在从CSV导入“numbers”列后,它已正确转换为数组,但我得到了以下内容:
数值错误:传递值的形状为(1414,1),索引表示(1414,6)
因此,我将代码更改为df2 = pd.DataFrame(df, columns=['1'])
,并得到以下输出。问题是,我需要它在6列中,而不是1列。
1
0 11 21 27 36 62 24
1 14 18 36 49 67 18
2 18 31 36 43 47 20
因此,正如您所看到的,我只得到了一列所有数字,而不是一个6列数字数组。
2条答案
按热度按时间lyr7nygr1#
记住CSV代表逗号分隔值,即它读取两个逗号之间的所有内容作为一个输入。如果你想分隔数字,你必须把逗号放在它们之间,否则你必须解析6个非逗号分隔值的较长文本,并重建 Dataframe 。
vltsax252#
那就先分了吧