我是熊猫的新手,并试图弄清楚如何同时为pandas添加多个列.任何帮助在这里表示赞赏.理想情况下,我想一步到位而不是多次重复步骤...
import pandas as pd
df = {'col_1': [0, 1, 2, 3],
'col_2': [4, 5, 6, 7]}
df = pd.DataFrame(df)
df[[ 'column_new_1', 'column_new_2','column_new_3']] = [np.nan, 'dogs',3] #thought this would work here...
Run Code Online (Sandbox Code Playgroud) 我有一个mydf有两列的pandas数据框,两列都是datetime数据类型:mydate和mytime.我要添加三个多列:hour,weekday,和weeknum.
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)
Run Code Online (Sandbox Code Playgroud)
该代码段有效,但它的计算效率不高,因为它至少循环数据帧三次.我想知道是否有更快和/或更优化的方法来做到这一点.例如,使用zip或merge?例如,如果我只创建一个返回三个元素的函数,我该如何实现呢?为了说明,该功能将是:
def getHWd(d,t):
return t.hour, d.isocalendar()[1], d.weekday()
Run Code Online (Sandbox Code Playgroud)