2017-09-07 18 views
1

私はCSVファイルにpandas DataFrameを保存したいと思います。 DataFrameには2つの列があります。最初の列は文字列を持ち、2番目の列は複数の配列を格納しています。パンダが配列の代わりにcsvに文字列を書き込む

問題ここでは、代わりに、文字列と行ごとに配列を格納する、CSVファイルには、次のように行ごとに2つの文字列を持っているということです。

0004d4463b50_01.jpg,"[ 611461  44 613328 ...,  5 1767504  19]" 

私のコードの例は、ここで見つけることができます:

rle = [] 

# run test loop with a progress bar 
for i, (images, _) in enumerate(loader): 
    # do some stuff here 
    # 'rle_local' is a ndarray with more than a thousand elemnts 
    rle.append(rle_local) 

# 'names' contain the strings 
df = pd.DataFrame({'strings': names, 'arrays': rle}) 
df.to_csv(file_path, index=False, compression='gzip') 

ここで間違っているものを上の任意のアイデア、なぜそれが文字列の代わりに配列が含まれている数字の束を保存しますか?

ありがとうございます!

+0

所望の出力は、879386 40 881253 141 883140 205 885009 17 885032 259 886923 308 888839 328 890754 340 892670 347 894587 352 896503 357 898420 360 900336、 '00087a6bd4dc_01.jpgあろう364 902253 367 904170 370 906086 374 ... '最初に文字列、次に配列に含まれるすべての数字。 –

+0

内容の代わりに '...'が格納されているので、文字列を解析して配列を復元できないと思います。 –

+0

ああ、私は '...'があなたによって追加されたと思っています! – IanS

答えて

1

解決策は、データフレーム内の配列をシリアル化することです。

# overwrites original arrays! 
df['arrays'] = df['arrays'].apply(lambda a: ' '.join(map(str, a))) 

クイック例:

s = pd.Series([np.arange(100, 200), np.arange(200, 300)]) 
s.apply(lambda a: ' '.join(map(str, a))).to_csv() 
関連する問題