Tôi có các tệp dữ liệu khác nhau và cần hợp nhất chúng lại với nhau dựa trên cột ngày. Nếu tôi chỉ có hai tệp, tôi có thể sử dụng df1.merge(df2, on='date')
, nếu tôi thử với ba tệp, tôi sử dụng df1.merge(df2.merge(df3, on='date'), on='date')
, nhưng có nhiều tệp để hợp nhất.Python: gấu trúc hợp nhất nhiều dataframes
Các khung dữ liệu có một cột chung - "ngày", nhưng không có cùng số hàng và cột và tôi chỉ cần các ngày phổ biến cho mỗi khung dữ liệu.
Vì vậy, tôi đang cố gắng viết một hàm đệ quy trả về một khung dữ liệu với tất cả dữ liệu nhưng nó không hoạt động. Tôi nên hợp nhất nhiều datafram như thế nào?
Tôi đã thử các cách khác nhau và gặp lỗi như out of range
, keyerror 0/1/2/3
và can not merge DataFrame with instance of type <class 'NoneType'>
.
Đây là kịch bản:
dfs = [df1, df2, df3] # list of dataframes
def mergefiles(dfs, countfiles, i=0):
if i == (countfiles - 2): # it gets to the second to last and merges it with the last
return
dfm = dfs[i].merge(mergefiles(dfs[i+1], countfiles, i=i+1), on='date')
return dfm
print(mergefiles(dfs, len(dfs)))
Một ví dụ: file_1:
May 19, 2017;1,200.00;0.1%
May 18, 2017;1,100.00;0.1%
May 17, 2017;1,000.00;0.1%
May 15,2017;900.00;0.2%
file_2:
May 20, 2017;2,200.00;1000000;0.2%
May 18, 2017;2,100.00;1590000;0.2%
May 16, 2017;2,000.00;1230000;0.2%
May 15,2017;1,900.00;1000000;0.2%
file_3:
May 21, 2017;3,200.00;2000000;0.2%
May 17, 2017;3,100.00;2590000;0.2%
May 16, 2017;3,000.00;2230000;0.2%
May 15,2017;2,900.00;2000000;0.2%
Dự kiến hợp nhất kết quả:
May 15,2017;2,900.00;2000000;0.2%
Và kết quả mong đợi của bạn là gì? – zipa
@zipa, chỉ cần chỉnh sửa bài đăng. Kết quả hợp nhất là kết quả mong đợi. –
Kiểm tra câu trả lời. Dễ hiểu nhất và dễ dàng nhất. – everestial007