4

リストを持つ列を含むデータフレームがあります。データフレームをファイルに書き込んでから再度開くと、リストが文字列に変換されます。リストをメンバーとして持つデータフレームを安全に読み書きする方法はありますか?

df1 = DataFrame({'a':[['john quincy', 'tom jones', 'jerry rice'],['bob smith','sally ride','little wayne'],['seven','eight','nine'],['ten','eleven','twelve']],'b':[9,2,4,5], 'c': [7,3,0,9]})

df1.to_csv('temp.csv')
df2 = read_csv('temp.csv')

#note how the list (df1) has been converted to a string (df2)
df1['a'][0]
['john quincy', 'tom jones', 'jerry rice']

df2['a'][0]
"['john quincy', 'tom jones', 'jerry rice']"
4

2 に答える 2

2

そもそもリストを文字列に変換する必要はありません。リストは自動的に文字列に変換されます。リストを含むデータフレームを作成し、on で使用するだけast.literal_evalですdf2

                                             a  b  c
0   ['john quincy', 'tom jones', 'jerry rice']  9  7
1  ['bob smith', 'sally ride', 'little wayne']  2  3
2                   ['seven', 'eight', 'nine']  4  0
3                  ['ten', 'eleven', 'twelve']  5  9

df1.to_csv('temp.csv')
df2 = read_csv('temp.csv')

ast.literal_eval文字列をリストに戻すために使用します。

import ast
fd2['a']=df2['a'].apply(lambda x: ast.literal_eval(x))
type(df2['a'][1])

出力:

list
于 2012-11-01T20:15:04.673 に答える
1

問題はここにあります:

df2['a'] =df2['a'].map(f)
                   ^^^^^^

どこf = lambda x : ','.join(x)

再度参加する意味はありません。リストに分割する必要があります。

df2['a'] = df2['a'].map(lambda L: L.split(','))
于 2012-11-01T20:03:42.460 に答える