Tôi có khung dữ liệu gấu trúc mydf
có hai cột và cả hai cột là kiểu dữ liệu datetime: mydate
và mytime
. Tôi muốn thêm ba cột khác: hour
, weekday
và weeknum
.Thêm nhiều cột vào Pandas khung dữ liệu từ hàm
def getH(t): #gives the hour
return t.hour
def getW(d): #gives the week number
return d.isocalendar()[1]
def getD(d): #gives the weekday
return d.weekday() # 0 for Monday, 6 for Sunday
mydf["hour"] = mydf.apply(lambda row:getH(row["mytime"]), axis=1)
mydf["weekday"] = mydf.apply(lambda row:getD(row["mydate"]), axis=1)
mydf["weeknum"] = mydf.apply(lambda row:getW(row["mydate"]), axis=1)
Đoạn mã hoạt động nhưng không hiệu quả về mặt tính toán khi nó vòng qua khung dữ liệu ít nhất ba lần. Tôi chỉ muốn biết nếu có một cách nhanh hơn và/hoặc tối ưu hơn để làm điều này. Ví dụ: sử dụng zip
hoặc merge
? Ví dụ, nếu tôi chỉ tạo một hàm trả về ba phần tử, tôi nên thực hiện điều này như thế nào? Để minh họa, các chức năng sẽ là:
def getHWd(d,t):
return t.hour, d.isocalendar()[1], d.weekday()
có thể trùng lặp của [? Có thể thêm nhiều cột cùng một lúc để một DataFrame gấu trúc] (http : //stackoverflow.com/questions/19866377/is-it-possible-to-add-several-columns-at-once-to-a-pandas-dataframe) – geekazoid