如何将 Modin pandas 数据帧附加到其他数据帧?

How to append a Modin pandas dataframe to other?

我正在对每个文件 6GB 左右的大文件进行计算,并遇到了我听说的 Modin pandas与 pandas.

相比进行了优化

我需要分块读取 CSV 文件并对其执行计算,然后将其附加到大 dataframe 并将大 dataframe 转换为 CSV 再次归档。

这在 Pandas 上工作得非常好。但是即使是小文件也需要花费太多时间。我什至无法想象 6GB 个文件。

但是,当我尝试用 modin pandas 做同样的事情时,它无法将数据帧附加到我想转换为 csv 文件的大数据帧。

任何人都可以提出任何替代方案或解决方案。

Python - 3.6
Pandas - 0.24.2
Modin Pandas - 0.5.2

代码.

import modin.pandas as pd

def calculate_visit_prioritization(df):
    # calculations here
    return df

def get_all_data():
    big_df = pd.DataFrame()
    for df in pd.read_csv('./samp.csv', chunksize=50):
        big_df = big_df.append(calculate_visit_prioritization(df))
    big_df.to_csv('samps3.csv', index=False)

def main():
    get_all_data()

if __name__ == '__main__':
    main()

使用 Modin pandas 附加数据帧时出错。

UserWarning: DataFrame.append for empty DataFrame defaulting to pandas implementation.

File "/home/tony/.local/lib/python3.6/site-packages/pandas/core/reshape/concat.py", line 289, in __init__ raise TypeError(msg)

TypeError: cannot concatenate object of type ""; only pd.Series, pd.DataFrame, and pd.Panel (deprecated) objs are valid

我看过这个link,据说 pandas 的 .append() 函数是 部分 ( P ) 在 Modin 中实现的.

Modin 的 USP 是 pandas 和 modin pandas 之间的唯一区别是导入语句。要连接多个数据帧,请使用单个 pd.concat 调用而不是 N append 调用以获得更好的性能。

df_list = []
for df in pd.read_csv('./samp.csv', chunksize=50):
    df_list.append(calculate_visit_prioritization(df))

big_df = pd.concat(df_list, ignore_index=True)
big_df.to_csv('samps3.csv', index=False)

这也应该优雅地处理空 sub-DataFrames。