在讀取csv或tsv文件之前是否可以爲DataFrame列設置條件(過濾器),如果我已經知道列名和類型?如果是,如何?在閱讀csv或tsv文件之前在Pandas DataFrame列上應用條件
例如:考慮在一個非常大的文件中有兩個數值列(col1和col2)。我不想在內存中加載整個文件,只選擇col1大於col2的那些行。因此,首先,我想在數據框上設置條件,使其只應讀取col1大於col2的csv文件中的那些行。我希望我的解釋有道理。
感謝
在讀取csv或tsv文件之前是否可以爲DataFrame列設置條件(過濾器),如果我已經知道列名和類型?如果是,如何?在閱讀csv或tsv文件之前在Pandas DataFrame列上應用條件
例如:考慮在一個非常大的文件中有兩個數值列(col1和col2)。我不想在內存中加載整個文件,只選擇col1大於col2的那些行。因此,首先,我想在數據框上設置條件,使其只應讀取col1大於col2的csv文件中的那些行。我希望我的解釋有道理。
感謝
您可以使用blaze這是有一起pandas
一個方便的工具。
假設的輸入文件:
a,b
1,2
3,4
5,3
3,6
6,1
然後我們打開文件和查詢數據 - 注意,不執行查詢,直到您嘗試兌現/訪問它:
import blaze
import pandas as pd
csv_data = blaze.Data('input.csv')
query = csv_data[csv_data['a'] > csv_data['b']]
df = pd.DataFrame.from_records(query, columns=query.fields)
這然後給出df
爲:
a b
0 5 3
1 6 1
不會在內存中加載整個csv數據? – Manu
@Manu nope - 它將通過查詢的行加載到內存中,並且它僅作爲DataFrame構造的一部分來執行...... –
你的問題太模糊,因爲它取決於什麼過濾涉及發佈具有代表性的數據樣本和期望的輸出 – EdChum
什麼類型的過濾器?我不相信你可以在Pandas閱讀時過濾數據。您需要使用CSV閱讀器,在讀取每行時過濾數據,然後從過濾的行中創建數據框。 – Alexander
@EdChum。考慮一個非常大的文件中有兩個數字列(col1和col2)。我不想在內存中加載整個文件,只選擇col1大於col2的那些行。因此,首先,我想在數據框上設置它應該只讀取col1大於col2的行的條件。我希望我的解釋有意義 – Manu