ValueError (строка для плавания), условно для цикла - PullRequest
0 голосов
/ 10 апреля 2019

У меня есть данные в pandas.groupby объекте, и я пытаюсь выполнить итерацию по группам на основе условия в столбце под названием «Количество».Тем не менее, сообщение об ошибке, которое я получаю, пытается преобразовать «ссылочный» код из строки в число с плавающей точкой, но я не уверен, где я даю эту директиву.

for data in row:
    if float(data) in ['Amount'] > 0:
        {'buy_currency' : ['Currency'],
          'buy_quantity' : ['Amount'],
        'order_id' : str(data)['Reference']}

Я полагаю, что неправильно понимаю вторую строку: if float(data) in ['Amount'] > 0

Я только хочу преобразовать поля «Сумма» в число с плавающей запятой, и с остальными полями все в порядке.

Я ценю любые указания или толчок в правильном направлении!

import pandas as pd
import numpy as np

df2 = pd.read_excel('sample.xlsx')
mask = df2.groupby(['Reference'])
groups = mask.groups

for ref, trades in mask:
    for index, row in trades.iterrows():
       for data in row:
                if float(data) in ['Amount'] > 0:
                    {'buy_currency' : ['Currency'],
                     'buy_quantity' : ['Amount'],
                     'order_id' : str(data)['Reference']}
                else:
                    {'sell_currency' : ['Currency'],
                     'buy_quantity' : ['Amount'],
                     'order_id': str(data)['Reference']}

Набор данных содержит следующие образцы: Образец набора данных

Ошибкаполученное сообщение:

ValueError: could not convert string to float: 'bbb8ee04-053c-4174-b5b1-281c10618d52'

1 Ответ

1 голос
/ 10 апреля 2019

Я не совсем уверен, что вы пытаетесь сделать.Знаете ли вы, что вы можете проверить несколько значений столбцов за один раз, используя masks в пандах?Вот пример кода, который может быть полезен для вас:

import pandas as pd
import numpy as np

df2 = pd.read_excel('sample.xlsx')
df2['Amount'] = df2['Amount'].astype(float)
df2['Reference'] = df2['Reference'].astype(str)

# no need to group
mask = df2['Amount'] > 0
df2['buy_currency'] = np.where(mask, df2['Currency'], np.nan)
df2['buy_quantity'] = np.where(mask, df2['Amount'], np.nan)
df2['order_id'] = np.where(mask, df2['Reference'], np.nan)

mask2 = df2['Amount'] < 0
df2['sell_currency'] = np.where(mask2, df2['Currency'], np.nan)
df2['sell_quantity'] = np.where(mask2, df2['Amount'], np.nan)
df2['order_id'] = np.where(mask2, df2['Reference'], np.nan)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...