python dataframe列float到int

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (1)
  • 关注 (0)
  • 查看 (1133)

我正在尝试清理一些数据,我希望'volume'列从a float到a int。我很确定lambda会更好,但我也不知道,我有点想把它作为一个挑战来弄明白。但是,我遇到了各种错误的障碍。下面代码的顶部是代码的内容,函数块抛出的错误,以及之后的所有其他函数是我尝试过的各种解决方案以及它们给我的错误。我只包括3,但是我也用.values搞砸了一些,但.values中包含的代码与我尝试过的大多数语法类似。

我现在不知道是否应该删除该功能,或者是否有可能的解决方案,我只是不知道它。

import pandas as pd
import numpy as np
from binance.client import Client

client = Client('api_key', 'secret_key')


t_df = pd.DataFrame(client.get_all_tickers())
tickers = t_df.loc[:, ['symbol']]


def tick_data(*args, **kwargs):
for i in tickers:
    tick_df = pd.DataFrame(client.get_ticker())
    tick = tick_df.loc[:, ['symbol', 'volume']]
    tick.iloc[:,['volume']].astype(int)

    if tick['volume'].dtype != np.number:
        print('yes')
    else:
        print('no')
return tick

TypeError:无法使用灵活类型执行reduce

def tick_data(*args, **kwargs):
for i in tickers:
    tick_df = pd.DataFrame(client.get_ticker())
    tick = tick_df.loc[:, ['symbol', 'volume']].values
    tick[:,['volume'].astype(int)

    if tick['volume'].dtype != np.number:
        print('yes')
    else:
        print('no')
return tick

文件“”,第7行,如果勾选['volume']。dtype!= np.number:SyntaxError:语法无效

def tick_data(*args, **kwargs):
for i in tickers:
    tick_df = pd.DataFrame(client.get_ticker())
    tick = tick_df.loc[:, ['symbol', 'volume']]
    tick[:,['volume']].astype(int)

    if tick['volume'].dtype != np.number:
        print('yes')
    else:
        print('no')
return tick

TypeError:不可用类型:'sl​​ice'

提问于
用户回答回答于

你有几个问题。

在第一个示例中,iloc只接受DataFrame中行和列的整数位置,这会产生错误。即

tick.iloc[:,['volume']].astype(int)

不起作用。如果您想要基于标签的索引,请使用.loc

tick.loc[:,['volume']].astype(int)

或者,使用基于括号的索引,它允许您直接获取整列,而不使用行上的切片语法(:):

tick['volume'].astype(int)

接下来,astype(int)返回一个新值,它不会就地修改。所以你想要的是

tick['volume'] = tick['volume'].astype(int)

至于你的dtype是一个数字检查,你不想检查== np.number,但你不想检查is,只有True它返回,如果它是np.number,如果它是一个子类np.int64。使用np.issubdtype,或者说pd.api.types.is_numeric_dtype

if np.issubdtype(tick['volume'].dtype, np.number):

要么:

if pd.api.types.is_numeric_dtype(tick['volume'].dtype):

所属标签

可能回答问题的人

  • 天使的炫翼

    17 粉丝531 提问9 回答
  • 优惠活动秘书

    0 粉丝2 提问8 回答
  • 最爱开车啦

    8 粉丝503 提问6 回答
  • 富有想象力的人

    3 粉丝0 提问5 回答

扫码关注云+社区

领取腾讯云代金券