1
有我的數據框。 我有「操作」列,這些列中的值定義了循環。例如,Operation = 4定義了持續時間爲1的循環開始,並且Operation = 9是該循環的結束。等A2和A3迴路。我如何插入值和添加新的列,如果需要A1,A2,A3等等,通過開始和結束操作定義越來越多的循環。要強調的是,在重疊的情況下,如果已經存在,可以創建新的列或添加到現有的下一列。謝謝大家幫忙熊貓如何通過數據幀獲得行索引列值
有我的數據框。 我有「操作」列,這些列中的值定義了循環。例如,Operation = 4定義了持續時間爲1的循環開始,並且Operation = 9是該循環的結束。等A2和A3迴路。我如何插入值和添加新的列,如果需要A1,A2,A3等等,通過開始和結束操作定義越來越多的循環。要強調的是,在重疊的情況下,如果已經存在,可以創建新的列或添加到現有的下一列。謝謝大家幫忙熊貓如何通過數據幀獲得行索引列值
UPDATE:
In [136]: df
Out[136]:
a b c operation
0 8 7 5 1
1 3 1 0 2
2 5 4 0 3
3 9 7 7 4
4 4 6 8 5
5 7 8 0 6
6 1 8 8 7
7 0 9 0 8
8 9 9 7 9
9 0 7 3 10
In [137]: df['A1'] = ''
In [138]: df.ix[(df.index >= df[df.operation == 4].index.tolist()) & \
.....: (df.index <= df[df.operation == 9].index.tolist()), 'A1'] = 1
In [139]:
In [139]:
In [139]: df['A2'] = ''
In [140]: df.ix[(df.index >= df[df.operation == 2].index.tolist()) & \
.....: (df.index <= df[df.operation == 7].index.tolist()), 'A2'] = 2
In [141]: df
Out[141]:
a b c operation A1 A2
0 8 7 5 1
1 3 1 0 2 2
2 5 4 0 3 2
3 9 7 7 4 1 2
4 4 6 8 5 1 2
5 7 8 0 6 1 2
6 1 8 8 7 1 2
7 0 9 0 8 1
8 9 9 7 9 1
9 0 7 3 10
OLD答案:
In [93]: df
Out[93]:
a b c OPERATION
0 1 1 0 op2
1 1 5 6 op2
2 7 7 2 START
3 1 6 2 op2
4 7 7 4 op2
5 3 2 0 op2
6 6 9 9 op1
7 6 1 4 END
8 5 3 6 op1
9 9 2 9 op3
In [94]: df[(df.index >= df[df.OPERATION == 'START'].index.tolist()) & \
....: (df.index <= df[df.OPERATION == 'END'].index.tolist())]
Out[94]:
a b c OPERATION
2 7 7 2 START
3 1 6 2 op2
4 7 7 4 op2
5 3 2 0 op2
6 6 9 9 op1
7 6 1 4 END
說明:
In [53]: df.OPERATION == 'START'
Out[53]:
0 False
1 False
2 True
3 False
4 False
5 False
6 False
7 False
8 False
9 False
Name: OPERATION, dtype: bool
In [54]: df[df.OPERATION == 'START'].index.tolist()
Out[54]: [2]
In [55]: df.index >= df[df.OPERATION == 'START'].index.tolist()
Out[55]: array([False, False, True, True, True, True, True, True, True, True], dtype=bool)
非常感謝。所以如果我想在START和END之間添加新的'A'值x,我該怎麼做?謝謝 – Felix
@Felix,我不明白你想把什麼價值放到新的專欄中。那麼其他_行呢?或者你是否想要在START和END之間有行的另一個DF副本?您能否使用樣本輸入數據集(文本/ CSV/dict/JSO/pickle表單中的5-7行)更新您的問題併發布期望的輸出? – MaxU
@Felix,我已經更新了我的答案 - 請檢查 – MaxU