第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

將 Pandas 數(shù)據(jù)幀中的列替換為該列的平均值

將 Pandas 數(shù)據(jù)幀中的列替換為該列的平均值

阿晨1998 2022-09-13 19:59:46
我有一個數(shù)據(jù)幀:df = pd.DataFrame([[1, 2], [1, 3], [4, 6]], columns=['A', 'B'])   A  B0  1  21  1  32  4  6我想返回一個相同大小的數(shù)據(jù)幀,其中包含每列的平均值:   A      B0  2  3.6661  2  3.6662  2  3.666有沒有一種簡單的方法可以做到這一點(diǎn)?
查看完整描述

3 回答

?
炎炎設(shè)計

TA貢獻(xiàn)1808條經(jīng)驗(yàn) 獲得超4個贊

這是一個分配:


df.assign(**df.mean())


    A         B

0  2.0  3.666667

1  2.0  3.666667

2  2.0  3.666667


均值可通過以下公式輕松獲得:DataFrame.mean


df.mean()


tenor_yrs    14.292857

rates         2.622000

dtype: float64

綜上所述,我們可以使用字典解包將現(xiàn)有列替換為結(jié)果值。請注意,我們可以使用以下方法將 解壓縮到字典中:SeriesSeries**


{**df.mean()}

# {'tenor_yrs': 14.292857142857143, 'rates': 2.622}

假設(shè)添加新列的方式是 as ,解壓縮使字典鍵成為函數(shù)的參數(shù)。并且由于原始數(shù)據(jù)幀的索引受到尊重,因此會將數(shù)據(jù)幀的值替換為均值。assigndf.assign(a_given_column=a_value, another_column=some_other_value)df.assign(**df.mean())


查看完整回答
反對 回復(fù) 2022-09-13
?
慕斯王

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超2個贊

在創(chuàng)建數(shù)據(jù)幀時,您只能提供一行:


pd.DataFrame(data = [df.mean()], index = df.index)

它提供:


     A         B

0  2.0  3.666667

1  2.0  3.666667

2  2.0  3.666667


查看完整回答
反對 回復(fù) 2022-09-13
?
三國紛爭

TA貢獻(xiàn)1804條經(jīng)驗(yàn) 獲得超7個贊

重新創(chuàng)建數(shù)據(jù)幀。將平均值系列發(fā)送到字典,然后索引定義行數(shù)。


pd.DataFrame(df.mean().to_dict(), index=df.index)


#     A         B

#0  2.0  3.666667

#1  2.0  3.666667

#2  2.0  3.666667

相同的概念,但首先創(chuàng)建完整陣列可以節(jié)省大量時間。


pd.DataFrame(np.broadcast_to(df.mean(), df.shape), 

             index=df.index, 

             columns=df.columns)

以下是一些時間。當(dāng)然,這將略微取決于列數(shù),但是當(dāng)您提供整個數(shù)組開始時,您可以看到存在相當(dāng)大的差異


import perfplot

import pandas as pd

import numpy as np


perfplot.show(

    setup=lambda N: pd.DataFrame(np.random.randint(1,100, (N, 5)),

                                 columns=[str(x) for x in range(5)]), 

    kernels=[

        lambda df: pd.DataFrame(np.broadcast_to(df.mean(), df.shape), index=df.index, columns=df.columns),

        lambda df: df.assign(**df.mean()),

        lambda df: pd.DataFrame(df.mean().to_dict(), index=df.index)

    ],

    labels=['numpy broadcast', 'assign', 'dict'],

    n_range=[2 ** k for k in range(1, 22)],

    equality_check=np.allclose,

    xlabel="Len(df)"

)

http://img1.sycdn.imooc.com//632070de0001570103940265.jpg

查看完整回答
反對 回復(fù) 2022-09-13
  • 3 回答
  • 0 關(guān)注
  • 204 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號