使用 pandas.DataFrame 将镶木地板文件写入 CSV 文件时如何防止表格格式?
How to prevent Tabular format when writing a parquet file into CSV file using pandas.DataFrame?
我读了一个 parquet 文件,它是 spark mllib 使用 pyarrow.parquet[= 的输出34=]。输出由一些行组成,每行有两对:一个词和一个向量(每行是一个 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.
中的列表解决了我的问题
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)
因此,输出显示的形状与预期相同。
我读了一个 parquet 文件,它是 spark mllib 使用 pyarrow.parquet[= 的输出34=]。输出由一些行组成,每行有两对:一个词和一个向量(每行是一个 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.
中的列表解决了我的问题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)
因此,输出显示的形状与预期相同。