簡體   English   中英

Python-如何提高數據框性能?

[英]Python - How to improve the dataframe performance?

有2個CSV文件。 每個文件有700,000行。

我應該逐行讀取一個文件,然后從另一文件中找到同一行。

然后,將兩個文件數據作為一個文件數據。

但是,每1,000行大約需要1分鍾!!

我不知道如何提高性能。

這是我的代碼:

import pandas as pd

fail_count = 0 
match_count = 0 
count = 0 

file1_df = pd.read_csv("Data1.csv", sep='\t')
file2_df = pd.read_csv("Data2.csv", sep='\t')

columns = ['Name', 'Age', 'Value_file1', 'Value_file2']
result_df = pd.DataFrame(columns=columns)

for row in fil1_df.itterow():

    name = row[1][2]
    position = row[1][3]

    selected = file2_df[(file2_df['Name'] == name ) & (file2_df['Age'] == age)]

    if selected.empty :
        fail_count += 1
        continue

    value_file1 = row[1][4]
    value_file2 = selected['Value'].values[0]

    result_df.loc[len(result_df)] = [name, age, value_file1, value_file2]

    match_count += 1

print('match : ' + str(match_count))
print('fail : ' + str(fail_count))
result_df.to_csv('result.csv', index=False, encoding='utf-8')

哪條線可以更改?

還有其他方法可以執行此過程嗎?

這可能太簡單了,但是您是否嘗試過使用pandas.merge()功能?

有關語法,請參見此處

對於您的表:

result_df = pd.merge(left=file1_df, right=file2_df, on=['Name', 'Age'], how='inner')

這將執行“內部”聯接,僅保留兩個表中具有相同名稱和年齡的行。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM