我正在使用多處理,并為每個行程生成一個 Pandas DataFrame。我想將它們合并在一起并輸出資料。以下策略似乎幾乎可行,但是在嘗試使用df.read_csv()它讀入資料時僅使用第一個name作為列標題。
from multiprocessing import Process, Lock
def foo(name, lock):
d = {f'{name}': [1, 2]}
df = pd.DataFrame(data=d)
lock.acquire()
try:
df.to_csv('output.txt', mode='a')
finally:
lock.release()
if __name__ == '__main__':
lock = Lock()
for name in ['bob','steve']
p = Process(target=foo, args=(name, lock))
p.start()
p.join()
uj5u.com熱心網友回復:
您可以使用multiprocessing.Pool:
import multiprocessing
import pandas as pd
def foo(name):
d = {f'{name}': [1, 2]}
df = pd.DataFrame(data=d)
return df
if __name__ == '__main__':
data = ['bob', 'steve']
with multiprocessing.Pool(2) as pool:
data = pool.map(foo, data)
pd.concat(data, axis=1).to_csv('output.csv')
輸出:
>>> pd.concat(data, axis=1)
bob steve
0 1 1
1 2 2
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/333451.html
