Вот пример моих данных (более короткая версия, всего 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])
Код: Выделить всё
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
Код: Выделить всё
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 (
Код: Выделить всё
dfКод: Выделить всё
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