计算特定列的日期时间行的标准差,并保存到熊猫的新列中

时间:2020-01-21 09:16:54

标签: python pandas numpy typeerror

我的数据框的格式为277列和4000+行

df = pd.DataFrame({
        'TCTN':list('101','102','103','104')
         '0':[855days,626days,866days],
         '1':[946days,485days,182days],
         '2':[1242days,1985days,0days],
         '3':[345days,1864days,361days],
})

我需要找到各个行的标准偏差并将其保存到新列['STD'] 这是我尝试过的:

df3['STDDEV']=df3.apply(np.std(axis=1))

但是我得到了错误:

TypeError: _std_dispatcher() missing 1 required positional argument: 'a'

这是因为我需要在应用函数之前转换数据类型吗? 我对使用python中的数据非常陌生,非常感谢! :)

1 个答案:

答案 0 :(得分:2)

如果使用timedeltas更好,请在必要时使用DataFrame.std并省略第一列,如果需要像ddof=0一样的行为,也添加np.std,因为默认的熊猫ddof=1: / p>

df3['STDDEV'] = df3.iloc[:, 1:].std(axis=1, ddof=0)
print (df3)
  TCTN        0        1         2         3                   STDDEV
0  101 855 days 946 days 1242 days  345 days 323 days 05:21:59.628482
1  102 626 days 485 days 1985 days 1864 days 687 days 15:28:38.826254
2  103 866 days 182 days    0 days  361 days 322 days 21:48:52.946864

如果第一列是索引:

df3['STDDEV'] = df3.std(axis=1, ddof=0)
print (df3)
            1         2         3                   STDDEV
TCTN                                                      
101  946 days 1242 days  345 days 373 days 04:31:14.711017
102  485 days 1985 days 1864 days 680 days 09:10:40.121445
103  182 days    0 days  361 days 147 days 09:06:14.040307