我正在使用多重处理,并为每个进程生成一个 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()
您可以使用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')
Output:
>>> pd.concat(data, axis=1)
bob steve
0 1 1
1 2 2
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)