1,4,5,7,8,9,10,11,12,,,,,,,
1,3,4,5,7,8,9,10,12,16,,,,,,
1,4,5,7,8,9,10,12,,,,,,,,
といったデータが保存されているcsv fileがあります。
↓
[csv file](https://dotup.org/uploda/dotup.org1771772.csv.html)
これをlistとして、上から順に
x1 = [1, 4, 5, 7, 8, 9, 10, 11, 12]
x2 = [1, 3, 4, 5, 7, 8, 9, 10, 12, 16]
・
・
・
としたいのですが、どうすれば良いでしょうか。
自分の進捗
data=pd.read_csv("xxx.csv", header=None) z = data[0:10].values.tolist() とすることで、 z[0] = [1.0, 4.0, 5.0, 7.0, 8.0, 9.0, 10.0, 12.0, nan, nan, nan, nan, nan, nan, nan, nan] z[1] = [1.0, 3.0, 4.0, 5.0, 7.0, 8.0, 9.0, 10.0, 12.0, 16.0, nan, nan, nan, nan, nan, nan] ・ ・ ・
を得ました。
しかし、データはintが望ましいこと、空白の部分がnanとなって邪魔となってしまう問題があります。
2019/2/12 2:35 進捗2
z = z[~numpy.isnan(z)] とする手法を試したが、 TypeError: only integer scalar arrays can be converted to a scalar index とのエラー
2019/2/12/ 2:51 進捗3
y0 = [y0 for y0 in z[0] if str(y0) != 'nan'] とすることで、 z[0]を y0 = [1.0, 4.0, 5.0, 7.0, 8.0, 9.0, 10.0, 11.0, 12.0] と変換することができた。 ここで、 y0 = list(map(int, y0)) とすることで、 y0 = [1, 4, 5, 7, 8, 9, 10, 11, 12] を得た。
ひとまず達成はできたのですが、大掛かりすぎる気がします(正規の方法ではなさそう)。
2019 2/12/ 3:02 進捗4
for i in range(0,10,1): y[i] = [y[i] for y[i] in z[i] if str(y[i]) != 'nan'] y[i] = list(map(int, y[i])) でforでまとめた
進捗
import pandas as pd data=pd.read_csv("xxx.csv", header=None) z = data[0:30].values.tolist() #これで要素数を指定してやらないとエラーが出る。。動的にうまく確保できないらしい。 y = [0] * 30 for i in range(0,30,1): y[i] = [y[i] for y[i] in z[i] if str(y[i]) != 'nan'] y[i] = list(map(int, y[i]))
これでいけました。
回答2件
あなたの回答
tips
プレビュー