Tôi đang cố hợp nhất hai khung dữ liệu trong gấu trúc, sử dụng read_csv. Nhưng một trong các khung dữ liệu của tôi (trong ví dụ này là d1
) quá lớn đối với máy tính của tôi để xử lý, vì vậy tôi đang sử dụng đối số iterator
trong read_csv
.Kết hợp các khung dữ liệu lặp lại với gấu trúc
Hãy nói rằng tôi có hai dataframes
d1 = pd.DataFrame({
"col1":[1,2,3,4,5,6,7,8,9],
"col2": [5,4,3,2,5,43,2,5,6],
"col3": [10,10,10,10,10,4,10,10,10]},
index=["paul", "peter", "lauren", "dave", "bill", "steve", "old-man", "bob", "tim"])
d2 = pd.DataFrame({
"yes/no": [1,0,1,0,1,1,1,0,0]},
index=["paul", "peter", "lauren", "dave", "bill", "steve", "old-man", "bob", "tim"])
tôi cần phải hợp nhất chúng lại để mỗi hàng chụp toàn bộ dữ liệu cho mỗi người, vì vậy tương đương với việc thực hiện:
pd.concat((d1,d2), axis=1,join="outer")
nhưng kể từ khi tôi có thể không phù hợp với bộ nhớ, tôi đã sử dụng read_csv
(Tôi đang sử dụng read_csv
vì tôi đã xử lý một tệp lớn và lưu nó thành định dạng .csv, vì vậy hãy tưởng tượng dataframe d1 của tôi được chứa trong tệp test.csv
).
itera = pd.read_csv("test.csv",index_col="index",iterator=True,chunksize=2)
Nhưng khi tôi làm
for i in itera:
d2 = pd.concat((d2,i), axis=1,join="outer")
đầu ra của tôi là dataframe đầu tiên nối bởi dataframe thứ hai.
đầu ra của tôi trông như thế này:
col1 col2 col3 yes/no
one NaN NaN NaN 1.0
two NaN NaN NaN 0.0
three NaN NaN NaN 1.0
four NaN NaN NaN 0.0
five NaN NaN NaN 1.0
six NaN NaN NaN 1.0
seven NaN NaN NaN 1.0
eight NaN NaN NaN 0.0
nine NaN NaN NaN 0.0
one 1.0 5.0 10.0 NaN
two 2.0 4.0 10.0 NaN
three 3.0 3.0 10.0 NaN
four 4.0 2.0 10.0 NaN
five 5.0 5.0 10.0 NaN
six 6.0 43.0 4.0 NaN
seven 7.0 2.0 10.0 NaN
eight 8.0 5.0 10.0 NaN
nine 9.0 6.0 10.0 NaN
Hy vọng câu hỏi của tôi có ý nghĩa :)
câu trả lời nhanh: cố gắng sử dụng thư viện Dask, nó có thể xử lý dataframes lớn mà không thể phù hợp với bộ nhớ: http://dask.pydata.org/en/latest/ – CrazyElf
* đầu ra của tôi là dataframe đầu tiên được nối thêm bởi khung dữ liệu thứ hai * ... bạn muốn gì? – Parfait
Hãy thử một concat lồng nhau: 'pd.concat ([d1, pd.concat (itera, ignore_index = True)])' – Parfait