Я использую функцию .sum() для суммирования строк из DataFrame pandas и получаю индекс и тип dtype.Python

Программы на Python
Anonymous
Я использую функцию .sum() для суммирования строк из DataFrame pandas и получаю индекс и тип dtype.

Сообщение Anonymous »

Во-первых, позвольте мне начать с того, что я новичок в pandas, поэтому может быть очень простое решение, которое мне не хватает. У меня есть DataFrame с 61 столбцом, первый столбец — это тема, а следующие 60 столбцов соответствуют 60 испытаниям. В каждом столбце указано время для каждого испытания.
Вот пример моих данных (более короткая версия, всего 4 столбца):

Код: Выделить всё

import pandas as pd
df = pd.DataFrame([[1, 1, 1, 1], [2, 1, 2, 2], [3, 1, 3, 3], [4, 1, 4, 4], [5, 1, 5, 5]], columns = ['Subject', 'trial1', 'trial2', 'trial3'])
subjects = ([1, 2, 3, 4, 5])
Я хочу получить сумму времени до x пробного периода для всех строк и всех испытаний, и я использую следующий код:

Код: Выделить всё

MyColumns = ['time', 'subject', 'trial']
sum_of_times = pd.DataFrame(columns=MyColumns)
for subject in subjects:
for trial in range(1, 3):
MyRow = df.loc[df['Subject'] == subject].index
time = df.iloc[MyRow, 1:(trial+1)].sum(axis=1)
new_row = [time, subject, trial]
sum_of_times.loc[len(sum_of_times)] = new_row
sum_of_times = sum_of_times.reset_index(drop=True)

sum_of_times
Итак, например, если бы я перешел на пробную версию 2, я бы ожидал получить:

Код: Выделить всё

 time  subject  trial
0  1     1        1
1  2     1        2
2  1     2        1
3  3     2        2
4  1     3        1
5  4     3        2
6  1     4        1
7  5     4        2
8  1     5        1
9  6     5        2
Где:
  • для субъекта_1 пробной_1 я получаю 1 = 1
    для субъекта_1 пробная_2, 1 + 1 = 2
  • для субъекта_2 пробная_1, 1 = 1< /li>
    для субъекта_2 пробная_2, 1 + 2 = 3
и т. д. (Здесь я добавил _, чтобы было легче читать).
Проблема в том, что я вовремя получаю правильные числовые значения, но Я также получаю индекс строки из моего исходного DataFrame () и dtype. Это вывод (который я не могу найти, как правильно скопировать и вставить):

Код: Выделить всё

        time       subject  trial
0   0 1 dtype: int64    1   1
1   0 2 dtype: int64    1   2
2   1 1 dtype: int64    2   1
3   1 3 dtype: int64    2   2
4   2 1 dtype: int64    3   1
5   2 4 dtype: int64    3   2
6   3 1 dtype: int64    4   1
7   3 5 dtype: int64    4   2
8   4 1 dtype: int64    5   1
9   4 6 dtype: int64    5   2
Есть ли способ выбрать только числовое значение?

Подробнее здесь: https://stackoverflow.com/questions/784 ... -im-gettin

Вернуться в «Python»