Динамически добавление новой строки к существующей - PullRequest
0 голосов
/ 26 февраля 2019

У меня есть фрейм данных.

df = pd.DataFrame({'a':[1,1,2,2,2], 'b':['x','y','u','w','v']})

Следует выбрать значения столбца b на основе значения, переданного для столбца a.Скажем, я хочу выбрать все значения столбца b для значения 2 в столбце a и получить следующую строку

There are 3 values for value 2.
1. u
2. w
3. v

Я делаю это, используя цикл for, как показано ниже:

x = df[df['a']==2]['b'].values

result = "There are {} values for 2.\n".format(len(x))
z = ""
for i, val in enumerate(x):
    temp = "{}. {}\n".format(i+1, val)
    z += temp

print(result+z)

Вышеупомянутое решение работает, но я ищу более эффективное решение.

Контекст: я создаю ответ чатбота.Поэтому стараемся сократить время отклика

Любые предложения приветствуются.

Ответы [ 2 ]

0 голосов
/ 26 февраля 2019

Еще один золь:

m=df.loc[df['a'].eq(2),'b']
m.index=list(range(1,len(m)+1))
print('There are {} values for value 2.\n'.format(len(x)))
print(m.to_string())

There are 3 values for value 2.

1    u
2    w
3    v
0 голосов
/ 26 февраля 2019

Вы можете использовать to_string

x = df.loc[df.a == 2, 'b']

print('There are {} values for value 2.\n'.format(len(x)))
print(x.reset_index(drop = True).to_string())

There are 3 values for value 2.

0    u
1    w
2    v
...