亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

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

從具有相同 df 長度的 numpy 數組字典向 pandas 數據幀添加列的最快/最佳方法?

從具有相同 df 長度的 numpy 數組字典向 pandas 數據幀添加列的最快/最佳方法?

HUWWW 2023-08-15 17:21:44
可能是一個簡單的問題,我已經搜索過但找不到解決方案。我的代碼是這樣的data_df = pd.DataFrame([    ['2012-02-22', '3', 'a', 6],    ['2012-02-23', '3.2', 'g', 8],    ['2012-02-24', '5.2', 'l', 2],    ['2012-02-25', '1.4', 'i', 4]],    columns=['date', '1', '2', '3'])dict_a = {    'a': np.array([False, True, False, False], dtype='bool'),    'b': np.array([True, True, False, False], dtype='bool'),    'c': np.array([False, True, True, False], dtype='bool'),}我想要一個像這樣的 df              1  2  3      a      b      cdate                                      2012-02-22    3  a  6  False   True  False2012-02-23  3.2  g  8   True   True   True2012-02-24  5.2  l  2  False  False   True2012-02-25  1.4  i  4  False  False  False到目前為止,我發現的最好的方法就是這個,但對我來說這似乎很老套data_df = data_df.set_index('date')df_dict = pd.DataFrame.from_dict(dict_a)df_dict['date'] = data_df.indexdf_dict = df_dict.set_index('date')df_new = pd.merge(data_df, df_dict, left_index=True, right_index=True)有更快/更好的方法來實現它嗎?
查看完整描述

4 回答

?
斯蒂芬大帝

TA貢獻1827條經驗 獲得超8個贊

pd.concaton axis=1,然后設置索引


pd.concat((data_df,pd.DataFrame(dict_a)),axis=1).set_index("date")


              1  2  3      a      b      c

date                                      

2012-02-22    3  a  6  False   True  False

2012-02-23  3.2  g  8   True   True   True

2012-02-24  5.2  l  2  False  False   True

2012-02-25  1.4  i  4  False  False  False


查看完整回答
反對 回復 2023-08-15
?
精慕HU

TA貢獻1845條經驗 獲得超8個贊

為什么不簡單地:

for keys in dict_a:
    data_df[keys]=dict_a[keys]

請注意,dict 中的數據長度必須等于 dataframe 中的數據長度


查看完整回答
反對 回復 2023-08-15
?
茅侃侃

TA貢獻1842條經驗 獲得超22個贊

用途join:


data_df.join(pd.DataFrame(dict_a)).set_index('date')

              1  2  3      a      b      c

date                                      

2012-02-22    3  a  6  False   True  False

2012-02-23  3.2  g  8   True   True   True

2012-02-24  5.2  l  2  False  False   True

2012-02-25  1.4  i  4  False  False  False


查看完整回答
反對 回復 2023-08-15
?
富國滬深

TA貢獻1790條經驗 獲得超9個贊

嘗試DataFrame.assign:


data_df.assign(**dict_a)

         date    1  2  3      a      b      c

0  2012-02-22    3  a  6  False   True  False

1  2012-02-23  3.2  g  8   True   True   True

2  2012-02-24  5.2  l  2  False  False   True

3  2012-02-25  1.4  i  4  False  False  False


查看完整回答
反對 回復 2023-08-15
  • 4 回答
  • 0 關注
  • 190 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號