我想更改pandas数据帧中的数据。
我收集的数据需要分配一个步长值。触发阶跃变化的条件偶尔是时间或高压或温度值。我无法通过第一步:当排超过一定的压力(1100磅/平方英寸)和温度(40摄氏度)时,这是"稀释"阶段。
当尝试用更改值时
df.ix[(df['press'] > 1100) & (df['temp'] < 40),'proc'] = 'dilute';
我似乎只修改了最上面的两行。
items[0].head()
Out[37]:
time mass temp press proc
time
00:00:00 10:58:07 21.947102 23.306101 1.830506 dilute
00:00:01 10:58:08 22.076259 23.306101 57.274142 dilute
00:00:02 10:58:09 22.094710 23.306101 196.000203 pressurize
00:00:03 10:58:10 22.113161 23.306101 293.318991 pressurize
00:00:03 10:58:10 22.094710 23.306101 361.161415 pressurize
items[0].tail()
Out[38]:
time mass temp press proc
time
00:36:12 11:34:19 18.201538 39.798763 -1.678585 pressurize
00:36:13 11:34:20 18.183087 39.719165 -1.444645 pressurize
00:36:14 11:34:21 18.183087 39.671407 -1.444645 pressurize
00:36:15 11:34:22 18.219989 39.703246 -1.444645 pressurize
00:36:16 11:34:23 18.201538 39.758964 -1.444645 pressurize
经过进一步检查,索引似乎确实有效,给了我一个我希望看到稀释发生的索引。。。
print(df.ix[(df['press'] > 1100) & (df['temp'] < 40),'proc'].head(),
df.ix[(df['press'] > 1100) & (df['temp'] < 40),'proc'].tail())
time
00:00:26 pressurize
00:00:27 pressurize
00:00:28 pressurize
00:00:29 pressurize
00:00:30 pressurize
Name: proc, dtype: object time
00:26:08 pressurize
00:26:09 pressurize
00:26:10 pressurize
00:26:11 pressurize
00:26:12 pressurize
Name: proc, dtype: object
然而,当将它应用于我的数据时,我只得到前两个值的更改,并且消息——
FutureWarning:在未来,布尔数组类将作为布尔数组索引值[indexer]=值'
运行烹饪书示例确实会给出预期的响应。
我似乎有一个嵌套索引,但我不清楚为什么,也不清楚如何修改它。这里有几个层次,搜索解决方案并没有被证明是有用的,也没有提供帮助澄清的最佳途径。
我想重置索引,并使用数字,但我需要按值和时间增量对步长进行排序。
索引是一个timedelta,我需要它来规范在多个时段内启动的多个运行,以便在0秒的同一时间启动所有运行。我的搜索只生成日期,而不生成时间,因此我使用timedelta索引将值归一化为零。
如果有更好的方式来发布这个问题,或者更清晰,请询问。我非常愿意增加清晰度或修饰度。对于专业编码人员来说,很难预测有用的信息会是什么样子。
试试这个
df['press'].astype('float')
df['temp'].astype('float')
df['proc'] = np.where((df['press'] > 1100) & (df['temp'] < 40),'dilute', "pressurized")
使用.loc
而不是.ix
df.loc[(df.press > 1100) & (df.temp < 40), 'proc'] = 'dilute'