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

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

將處理過的 Pandas DataFrames 添加在一起

將處理過的 Pandas DataFrames 添加在一起

30秒到達戰場 2021-09-02 14:43:17
我試圖在 Python 中將兩個 DataFrame 添加在一起,首先將它們的索引列設置為等于現有列之一。但是,在以下線程中使用評分最高的方法會出現錯誤:這是問題的一個簡單示例:import pandas as pdimport numpy as npa = np.array([['A',1.,2.,3.],['B',1.,2.,3.],['C',1.,2.,3.]])a = pd.DataFrame(a)a = a.set_index(0)a      1    2    30               A  1.0  2.0  3.0B  1.0  2.0  3.0C  1.0  2.0  3.0b = np.array([['A',1.,2.,3.],['B',1.,2.,3.]])b = pd.DataFrame(b)b.set_index(0)b     1    2    30               A  1.0  2.0  3.0B  1.0  2.0  3.0df_add = a.add(b,fill_value=1)和錯誤:Traceback (most recent call last):  File "<ipython-input-150-885d92411f6c>", line 1, in <module>    df_add = a.add(b,fill_value=1)  File "/home/anaconda3/lib/python3.6/site-packages/pandas/core/ops.py", line 1234, in f    return self._combine_frame(other, na_op, fill_value, level)  File "/home/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 3490, in _combine_frame    result = _arith_op(this.values, other.values)  File "/home/anaconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 3459, in _arith_op    return func(left, right)  File "/home/anaconda3/lib/python3.6/site-packages/pandas/core/ops.py", line 1195, in na_op    result[mask] = op(xrav, yrav)TypeError: must be str, not int任何有關防止此問題的幫助將不勝感激。
查看完整描述

1 回答

?
慕田峪9158850

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

問題出在已定義的 DataFrame 中 - 所有數據都轉換為 2d numpy 數組中的字符串:


a = np.array([['A',1.,2.,3.],['B',1.,2.,3.],['C',1.,2.,3.]])

print (a)

[['A' '1.0' '2.0' '3.0']

 ['B' '1.0' '2.0' '3.0']

 ['C' '1.0' '2.0' '3.0']]

解決方案是刪除字符串值并按列表指定索引:


a = np.array([[1.,2.,3.],[1.,2.,3.],[1.,2.,3.]])

a = pd.DataFrame(a, index=list('ABC'))


b = np.array([[1.,2.,3.],[1.,2.,3.]])

b = pd.DataFrame(b, index=list('AB'))


df_add = a.add(b,fill_value=1)

print (df_add)

     0    1    2

A  2.0  4.0  6.0

B  2.0  4.0  6.0

C  2.0  3.0  4.0

或者在將 index 設置為floats后轉換 DataFrames :


a = np.array([['A',1.,2.,3.],['B',1.,2.,3.],['C',1.,2.,3.]])

a = pd.DataFrame(a)

a = a.set_index(0).astype(float)


b = np.array([['A',1.,2.,3.],['B',1.,2.,3.]])

b = pd.DataFrame(b)

b = b.set_index(0).astype(float)


df_add = a.add(b,fill_value=1)

print (df_add)

     1    2    3

0               

A  2.0  4.0  6.0

B  2.0  4.0  6.0

C  2.0  3.0  4.0


查看完整回答
反對 回復 2021-09-02
  • 1 回答
  • 0 關注
  • 159 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號

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