根据timedelta和索引修改列值

2024-04-19 16:11:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我想更改数据框中的数据。你知道吗

我收集的数据需要分配一个步长值。触发阶跃变化的条件有时是时间、高压或温度值。我无法通过第一步:当排超过一定的压力(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: in the future, boolean array-likes will be handled as a boolean array index values[indexer] = value'

运行cookbook examples确实会给出预期的响应。你知道吗

似乎我有一个嵌套索引,但我不清楚为什么,或者如何去修改这个。这里有几个层次,对解决方案的搜索没有被证明是有用的,也没有提供帮助澄清问题的最佳途径。你知道吗

我想重新设置索引,然后使用数字,但我需要按值和时间增量对步骤进行排序。你知道吗

索引是一个timedelta,我需要规范化在多个时段内启动的运行次数,以便在0秒的时间内同时启动所有运行。我的搜索只生成日期,而不生成时间,因此我使用timedelta索引将值规范化为零。你知道吗

如果有更好的方法来发表这个问题,或者更清晰,请提问。我非常愿意增加清晰度或修饰。对于一个专业的编码人员来说,很难预测有用的信息会是什么样子。你知道吗


Tags: 数据dftime时间itemsprocout温度
2条回答

.loc代替.ix

df.loc[(df.press > 1100) & (df.temp < 40), 'proc'] = 'dilute'

试试这个

df['press'].astype('float')
df['temp'].astype('float')

df['proc']  = np.where((df['press'] > 1100) & (df['temp'] < 40),'dilute', "pressurized")

相关问题 更多 >