我有一个很大的csv文件(650万x 25),并尝试将其加载到Matlab。我已经尝试In [67]:
s = pd.Series([1,1,2,2,2,2,3,3,3,3,4,4,5])
s[s!=s.shift()]
Out[67]:
0 1
2 2
6 3
10 4
12 5
dtype: int64
,xlsread
,但无法获得令人满意的结果。我读过我可以使用csvread
来实现它。
我的数据看起来像这样:
textscan
第一行是标题。其他行是数据。所有其他行的格式相同。
我的代码:
date_time;writetime;F1;F2;F3;R1;h12;b12;h_main;
01.01.2016 0:00:01;504910801075;1;1;1;3,94;799;1515;3,877;
01.01.2016 0:00:02;504910802314;1;1;1;3,96;795;1516;3,857;
我将标题读到fileID = fopen('value1.csv','r');
formatSpec = '%s; \n';
formatSpec1 = '%s%f %f %f %f %f %f %f %f %f %f\n';
A1 = fscanf(fileID, formatSpec);
A2 = textscan(fileID, formatSpec1,'Delimiter',{';', ','});
没关系:
A1
并将数据读取到A1 =
date_time;writetime;F1;F2;F3;R1;h12;b12;h_main;
。
A2
但是如何阅读A2 =
{1x1 cell} [5.0491e+11] [1] [1] [1] [3] [94] [799] [1515] [3] [877]
值?因为此列中的值只有3,94
或4
。
希望得到你的帮助!
答案 0 :(得分:1)
我会将它们视为一个字符串。以下作品。
fileID = fopen('value1.csv','r');
formatSpec = '%s; \n';
A1 = fscanf(fileID, formatSpec);
formatSpec1 = '%s%f %f %f %f %s %f %f %s\n';
A2 = textscan(fileID, formatSpec1,'Delimiter',{';'});
A2{6} = str2double(strrep(A2{6},',','.'));
A2{end} = str2double(strrep(A2{end},',','.'));
{1x1 cell} [5.0491e+11] [1] [1] [1] [3.94] [799] [1515] [3.8770]