У меня есть некоторые функции, которые я хочу записать в некоторые CSV-файлы.Я хочу использовать панд для этого подхода, если это возможно.
Я следую инструкции в здесь и создал несколько фиктивных данных, чтобы проверить это.В основном есть некоторые действия со случайным количеством принадлежащих им функций.
import io
data = io.StringIO('''Activity,id,value,value,value,value,value,value,value,value,value
Run,1,1,2,2,5,6,4,3,2,1
Run,1,2,4,4,10,12,8,6,4,2
Stand,2,1.5,3.,3.,7.5,9.,6.,4.5,3.,1.5
Sit,3,0.5,1.,1.,2.5,3.,2.,1.5,1.,0.5
Sit,3,0.6,1.2,1.2,3.,3.6,2.4,1.8,1.2,0.6
Run, 2, 0.8, 1.6, 1.6, 4. , 4.8, 3.2, 2.4, 1.6, 0.8
''')
df_unindexed = pd.read_csv(data)
df = df_unindexed.set_index(['Activity', 'id'])
Когда я запускаю:
df.xs('Run')
, я получаю
value value.1 value.2 value.3 value.4 value.5 value.6 value.7 \
id
1 1.0 2.0 2.0 5.0 6.0 4.0 3.0 2.0
1 2.0 4.0 4.0 10.0 12.0 8.0 6.0 4.0
2 0.8 1.6 1.6 4.0 4.8 3.2 2.4 1.6
value.8
id
1 1.0
1 2.0
2 0.8
, который почтичто я хочу, это все run
деятельность.Я хочу удалить 1-ую строку и 1-й столбец, т.е. заголовок и столбец id
.Как мне этого добиться?
Также второй вопрос: когда мне нужно только одно действие, как мне его получить.
При использовании
idx = pd.IndexSlice
df.loc[idx['Run', 1], :]
дает
value value.1 value.2 value.3 value.4 value.5 value.6 \
Activity id
Run 1 1.0 2.0 2.0 5.0 6.0 4.0 3.0
1 2.0 4.0 4.0 10.0 12.0 8.0 6.0
value.7 value.8
Activity id
Run 1 2.0 1.0
1 4.0 2.0
но нарезка не работает так, как я ожидал.Например, попытка
df.loc[idx['Run', 1], 2:11]
вместо этого приводит к ошибке:
TypeError: невозможно выполнить индексирование среза с этими индексаторами [2] из 'int'>
Итак, как мне получить свои функции в этом месте?
PS Если не ясно, я новичок в Pandas
, так что будьте осторожны.Кроме того, столбец id
можно редактировать, чтобы он был уникальным для каждого вида деятельности или для всего набора данных, если это облегчает задачу и т. Д.