【发布时间】:2018-12-28 04:28:00
【问题描述】:
我正在尝试清理 pandas df 中的一些数据,并且我希望“volume”列从 float 变为 int。
编辑:主要问题是我正在查看的float 变量的dtype 实际上是str。所以首先它需要被浮动,然后再被改变。
我删除了我正在考虑的另外两个解决方案,并留下了我使用的一个。上面是有错误的,下面是解决方案。
import pandas as pd
import numpy as np
#Call the df
t_df = pd.DataFrame(client.get_info())
#isolate only the 'symbol' column in t_df
tickers = t_df.loc[:, ['symbol']]
def tick_data(tickers):
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
以下是修改后的代码:
import pandas as pd
#Call the df
def ticker():
t_df = pd.DataFrame(client.get_info())
#isolate only the 'symbol' column in t_df
tickers = t_df.loc[:, ['symbol']]
for i in tickers:
#pulls out market data for each symbol
tickers = pd.DataFrame(client.get_ticker())
#isolates the symbol and volume
tickers = tickers.loc[:, ['symbol', 'volume']]
#floats volume
tickers['volume'] = tickers.loc[:, ['volume']].astype(float)
#volume to int
tickers['volume'] = tickers.loc[:, ['volume']].astype(int)
#deletes all symbols > 20,000 in volume, returns only symbol
tickers = tickers.loc[tickers['volume'] >= 20000, 'symbol']
return tickers
【问题讨论】:
-
我认为你想要
if tick['volume'].dtype is not np.number而不是!=。is检查它是否是同一个类(我可能忘记了那里的一些细微差别),而!=检查相等的值。 -
@Engineero 应用时每个函数仍然显示相同的错误。当我没有
tick[:,['volume']].astype(int)时,if/else 有效,并返回“是”
标签: string pandas floating-point int conditional