'float'对象没有属性'split'

时间:2018-03-19 12:37:46

标签: pandas numpy dataframe

我有一个带有浮点数的列的pandas数据框。我试图用点'。'分割一列中的每个项目。然后我想将第一项添加到第二项。我不知道为什么这个示例代码不起作用。

data= 
0     28.47000
1     28.45000
2     28.16000
3     28.29000
4     28.38000
5     28.49000
6     28.21000
7     29.03000
8     29.11000
9     28.11000

new_array = []
df = list(data)
for i in np.arange(len(data)):
    df1 = df[i].split('.')
    df2 = df1[0]+df[1]/60
    new_array=np.append(new_array,df2)

2 个答案:

答案 0 :(得分:2)

numpy.modfDataFrame构造函数一起使用:

arr = np.modf(data.values)
df = pd.DataFrame({'a':data, 'b':arr[1] + arr[0] / 60})
print (df)
       a          b
0  28.47  28.007833
1  28.45  28.007500
2  28.16  28.002667
3  28.29  28.004833
4  28.38  28.006333
5  28.49  28.008167
6  28.21  28.003500
7  29.03  29.000500
8  29.11  29.001833
9  28.11  28.001833

<强>详细

arr = np.modf(data.values)
print(arr)
(array([ 0.47,  0.45,  0.16,  0.29,  0.38,  0.49,  0.21,  0.03,  0.11,  0.11]), 
 array([ 28.,  28.,  28.,  28.,  28.,  28.,  28.,  29.,  29.,  28.]))

print(arr[0] / 60)
[ 0.00783333  0.0075      0.00266667  0.00483333  0.00633333  0.00816667
  0.0035      0.0005      0.00183333  0.00183333]

编辑:

df = pd.DataFrame({'a':data, 'b':arr[1] + arr[0]*5/3 })
print (df)
       a          b
0  28.47  28.783333
1  28.45  28.750000
2  28.16  28.266667
3  28.29  28.483333
4  28.38  28.633333
5  28.49  28.816667
6  28.21  28.350000
7  29.03  29.050000
8  29.11  29.183333
9  28.11  28.183333

答案 1 :(得分:1)

您的数据类型是浮点数,而不是字符串,因此不能是.split()(这是一个字符串方法)。相反,您可以使用math.modf将浮点数“拆分”为小数和小数部分 https://docs.python.org/3.6/library/math.html

function get_btc(address) {

    address_transaction(address, user_id, coin_key, deposite_txn_fee, function(callback) {

        for (var j = 0; j < callback.response.data.txs.length; j++) {
            let user_id = callback.user_id;

            //some code//
        }
    });
}

get_label_info(function(err, data) {

    for (var i = 0; i < data.length; i++) {

        let address = data[i].address;

        deposite_model.get_coin_info(function(err, data1) {

            var coin_name = data1[0].coin_code;

            const return_functions = get_switch(coin_name);

            if (return_functions) {

                obj[return_functions](address);
            }
        })
    }
});


function all_completed() {
    console.log('all functions has been completed');
}

你的另一个选择是将它们转换为字符串,拆分,转换为整数和浮点数,做一些数学然后合并浮点数。我宁愿把对象保留在个人身上。