我正在使用每2毫秒采样一次的机器中的数据帧,因此我的所有行索引都已重新编入索引到机器的时间戳。某些TTL事件可以在任何时间间隔内以毫秒精度发生,因此TTL可能会在奇数个毫秒内发生。
为了模拟这个,我创建了以下DataFrame:
import pandas as pd
df = pd.DataFrame({'x': xrange(10), 'y': xrange(10)})
df = df.ix[2::2] # now we only have "time sample" every 2 ms
df['events'] = '' # add a TTL channel
DataFrame现在看起来像这样:
x y events
2 2 2 NaN
4 4 4 NaN
6 6 6 NaN
8 8 8 NaN
[4 rows x 3 columns]
现在我想插入一个奇数索引的ttl,所以我使用DataFrame.loc
:
df.loc[3, 'events'] = 'kowabunga!'
我获得以下内容:
x y events
2 2 2 NaN
4 4 4 NaN
6 6 6 NaN
8 8 8 NaN
3 NaN NaN kowabunga!
[5 rows x 3 columns]
问题是我的索引的数字顺序(加上时间戳加倍)不会被保留。我怎样才能插入“kowabunga”行,使其位于索引2和4之间?
谢谢!
答案 0 :(得分:1)
在添加到数据框之后添加df.sort(inplace=True)
。
演示:
import pandas as pd
df = pd.DataFrame({'x': xrange(10), 'y': xrange(10)})
df = df.ix[2::2] # now we only have "time sample" every 2 ms
df['events'] = '' # add a TTL channel
df.loc[3, 'events'] = 'kowabunga!'
df.loc[5, 'events'] = 'kowabunga2!'
df.loc[1, 'events'] = 'kowabunga3!'
df.sort(inplace=True)
print df
输出:
x y events
1 NaN NaN kowabunga3!
2 2 2
3 NaN NaN kowabunga!
4 4 4
5 NaN NaN kowabunga2!
6 6 6
8 8 8
[7 rows x 3 columns]