将 Dataframe 中的数组写入csv

rseugnpd  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(154)

我用pandas把一个parquet文件读入一个dataframe。该框架看起来如下。

import pandas as pd
 
  dat1 = pd.read_parquet("myParquetFile.parquet")
  dat1

  Name Age Numbers
  John  33  [12.0, 0.99989, 0.3456]
  Zorro 34  [0.98,0.0009,.123]

  dat1.to_csv("myCSVFile.csv", index=False)

现在csv文件看起来像这样:

Name Age Numbers
    John  33  [12.0 0.99989 0.3456]
    Zorro 34  [0.98 0.0009  .123]

我需要将这些 Dataframe 写入csv文件。当我这样做时,我看到“Numbers”列中的值在csv中缺少一个逗号。如何确保列表值以逗号分隔,如下所示?

Name Age Numbers
    John  33  [12.0, 0.99989, 0.3456]
    Zorro 34  [0.98,0.0009,.123]

先谢了。

pb3skfrl

pb3skfrl1#

首先,保存到csv的所有数据都是文本。
如果只需要添加,,我认为从array s转换为list s应该会有所帮助:

dat1.assign(Numbers = dat1['Numbers'].apply(list)).to_csv('myCSVFile.csv', index=False)

对于类似列表的读取列,使用converters

df = pd.read_csv('myCSVFile.csv', converters={'Numbers': lambda x: ast.literal_eval(x)})
print (df)
    Name  Age                  Numbers
0   John   33  [12.0, 0.99989, 0.3456]
1  Zorro   34    [0.98, 0.0009, 0.123]

print (type(df.loc[0, 'Numbers']))
<class 'list'>
eiee3dmh

eiee3dmh2#

CSV格式仅为文本,数据类型在导入数据期间推断。
如果要保留逗号,则必须在导出之前转换为字符串:

dat1 = pd.DataFrame({'Name': ['John', 'Zorro'],
                     'Age': [33, 34],
                     'Numbers': [[12.0, 0.99989, 0.3456], [0.98, 0.0009, 0.123]]})
dat1.astype({'Numbers': str}).to_csv('myCSVFile.csv', index=False)

输出量:

Name,Age,Numbers
John,33,"[12.0, 0.99989, 0.3456]"
Zorro,34,"[0.98, 0.0009, 0.123]"

然后要读取数据,需要转换回列表:

import ast

df = pd.read_csv('myCSVFile.csv')
df['Numbers'] = df['Numbers'].apply(ast.literal_eval)

print(df)

输出量:

Name  Age                  Numbers
0   John   33  [12.0, 0.99989, 0.3456]
1  Zorro   34    [0.98, 0.0009, 0.123]

相关问题