【问题标题】:How to prevent Tabular format when writing a parquet file into CSV file using pandas.DataFrame?使用 pandas.DataFrame 将镶木地板文件写入 CSV 文件时如何防止表格格式?
【发布时间】:2019-09-18 00:58:30
【问题描述】:

我使用 pyarrow.parquet 读取了一个 parquet 文件,该文件是 spark mllib 的输出。输出由一些行组成,每行有两对:一个单词和一个向量(每行是一个 word2vec 对)。像下面这样:

 word1 "[-0.10812066  0.04352815 0.00529436 -0.0492562 -0.0974493533  0.275364409  -0.06501597  -0.3123745185 0.28186324 -0.05055101 0.06338456   -0.0842542  -0.10491376 -0.09692618 0.02451115  0.10766134]"  
 word2 "[-0.10812066  0.04352815 0.1875908 -0.0492562 ...
 ... 

当我使用 DataFrame 将结果写入 csv 文件时,我得到了:

 word1 "[-0.10812066  0.04352815 0.00529436 -0.0492562
    -0.0974493533  0.275364409  -0.06501597  -0.3123745185
    0.28186324 -0.05055101 0.06338456   -0.0842542   
    -0.10491376 -0.09692618 0.02451115  0.10766134]"  
 word2 "[-0.10812066  0.04352815 0.1875908 -0.0492562 ...
 ... 

如您所见,特殊位置的每个向量都被分成几行。 如何获得 csv 输出作为我从 parquet 文件中读取的内容? 我的源代码在这里:

import pandas as pd
import pyarrow.parquet as pq

data = pq.read_pandas('C://Users//...//p.parquet', columns=['word', 'vector']).to_pandas()

df = pd.DataFrame(data)

pd.DataFrame.to_csv(df, 'C://Users/...//p.csv', sep=" ", encoding='utf-8', columns=['word', 'vector'], index=False, header=False)

DataFrame 大小为:47524,DataFrame 形状为:(23762, 2)

【问题讨论】:

    标签: python csv dataframe parquet


    【解决方案1】:

    经过大量搜索,我没有找到直接解决我的问题的方法。但我在 python 中使用列表解决了我的问题。

    data = pq.read_pandas('C://...//p.parquet', columns['word','vector']).to_pandas()
    df = pd.DataFrame(data)
    
    vector = df['vector'].tolist()
    word = df['word'].tolist()
    
    k = [[]]
    for i in range(0, word.__len__()):
        l = []
        l.append(word[i])
        l.extend(vector[i])
        k.append(l)
    
    with open('C://...//f.csv', "w", encoding="utf-8") as f:
        writer = csv.writer(f)
        for row in k:
            writer.writerow(row)
    

    所以,输出显示为与预期相同的形状。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-10-28
      • 2019-06-02
      • 2014-12-13
      • 1970-01-01
      • 1970-01-01
      • 2014-11-25
      • 2017-07-26
      • 2018-11-09
      相关资源
      最近更新 更多