将值添加到数据框保留索引

如何解决将值添加到数据框保留索引

我有一个<data-table #toolChangeTable [columns]="columns" [data]="data" [loading]="loading" (lazyLoad)="onLazyLoad($event)" [lazy]="true" [lazyLoadOnInit]="false" [pageSize]="pageOptions.size" [multiselect]="true" [paging] = "true" [totalRecords]="total" defaultSortField="necLec" (edit)="updateToolChange($event,toolChangeTable)" (select)="onSelect($event,toolChangeTable)" (unSelect)="onUnSelect($event)"> <ng-container actionStart> <button mat-button (click)="onMultiRowUpdateClick()" (keypress.enter)="onMultiRowUpdateClick()" [disabled]="this.resourced || hasSelectedNone">Multi-Edit</button> <button mat-button (click)="clearSelections()" (keypress.enter)="clearSelections()">Clear All</button> <button mat-button (click)="onAddToolChangeClick()" [disabled]="this.resourced">Add Tool Change</button> <button mat-button (click)="onDeleteToolChangeClick()" (keypress.enter)="onDeleteToolChangeClick()" [disabled]="!hasSelectedSingle">Delete Tool Change</button> <button mat-button [disabled]="!hasSelectedSingle" (click)="onEditAuthoritiesClick()" (keypress.enter)="onEditAuthoritiesClick()">Edit Tool Change Authorities</button> </ng-container> </data-table> (test3),看起来像这样(DataFramedate格式)

pd.datetime

其中第一列import pandas as pd data = {'date': ['1890-07-01 00:00:00','1890-07-08 00:00:00','1890-07-15 00:00:00','1890-07-22 00:00:00','1890-07-29 00:00:00'],'date.1': ['1890-07-07','1890-07-14','1890-07-21','1890-07-28','1890-08-04'],'mean_temp(℃)': [23.3,23.9,28.3,26.1,26.8],'max_temp(℃)': [32.3,33.2,35.8,33.3,34.6],'min_temp(℃)': [18.9,17.0,22.5,22.0,22.3]} df = pd.DataFrame(data) df.set_index('date',inplace=True) date.1 mean_temp(℃) max_temp(℃) min_temp(℃) date 1890-07-01 00:00:00 1890-07-07 23.3 32.3 18.9 1890-07-08 00:00:00 1890-07-14 23.9 33.2 17.0 1890-07-15 00:00:00 1890-07-21 28.3 35.8 22.5 1890-07-22 00:00:00 1890-07-28 26.1 33.3 22.0 1890-07-29 00:00:00 1890-08-04 26.8 34.6 22.3 是数据帧的索引。 我正在渲染新数据(第一列的daterendered_date var,第三列是(pd.to_datetimenext_value_ var array([[28.330473]],dtype=float32)的另一列)。

rendered_date = render_date(last_day.index.date) # rendering new datetime object
rendered_date = pd.to_datetime(rendered_date,format='%Y/%m/%d') # making it for pandas
d = {'date':[rendered_date],'mean_temp(℃)':[next_value_]}
new_df = pd.DataFrame(data=d) # making new dataframe
new_df = new_df.set_index("date") # setting the same index

fr = [test3,new_df] # concating new DF with existing df (test3)
result = pd.concat(fr)

使结果底部看起来像

....some values ....
2020-07-31 00:00:00          2020-08-06     28.7            35.0    23.9
[2020-08-07 00:00:00]        NaT            [[28.330473]]   NaN     NaN

这不是我想要的。 我只想在result数据帧(或test3都可接受)的末尾附加数据,保留形状和索引。我该如何设置相同的格式?

....some values ....
2020-07-31 00:00:00          2020-08-06     28.7            35.0    23.9
2020-08-07 00:00:00          NaT            28.330473       NaN     NaN

解决方法

编辑

您的代码对我来说很好:

data = {'date': ['1890-07-01 00:00:00','1890-07-08 00:00:00','1890-07-15 00:00:00','1890-07-22 00:00:00','1890-07-29 00:00:00'],'date.1': ['1890-07-07','1890-07-14','1890-07-21','1890-07-28','1890-08-04'],'mean_temp': [23.3,23.9,28.3,26.1,26.8],'max_temp': [32.3,33.2,35.8,33.3,34.6],'min_temp': [18.9,17.0,22.5,22.0,22.3]}
df = pd.DataFrame(data)
df.date = pd.to_datetime(df.date)
df.set_index('date',inplace=True)

rendered_date = pd.to_datetime('2020-08-07')
next_value_ = 28.330473
d = {'date': [rendered_date],'mean_temp': [next_value_]}
df = pd.concat([df,pd.DataFrame(d).set_index('date')])

输出

                date.1  mean_temp  max_temp  min_temp
date
1890-07-01  1890-07-07  23.300000      32.3      18.9
1890-07-08  1890-07-14  23.900000      33.2      17.0
1890-07-15  1890-07-21  28.300000      35.8      22.5
1890-07-22  1890-07-28  26.100000      33.3      22.0
1890-07-29  1890-08-04  26.800000      34.6      22.3
2020-08-07         NaN  28.330473       NaN       NaN

添加行的一种更惯用的方法是

df.loc[rendered_date] = {'mean_temp': next_value_}
# # or
# df.loc[rendered_date] = [np.nan,next_value_,np.nan,np.nan]
# # or even
# df.loc[rendered_date,'mean_temp'] = next_value_

所有选项的输出均相同


但是,如果可以获取所有新数据并将其作为批处理追加,则比一次串联一行要快。使用numpy / C实现,使用Python更快地将标量值分配给本地对象(如列表或字典),而使用矢量化调用的熊猫则更快。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


依赖报错 idea导入项目后依赖报错,解决方案:https://blog.csdn.net/weixin_42420249/article/details/81191861 依赖版本报错:更换其他版本 无法下载依赖可参考:https://blog.csdn.net/weixin_42628809/a
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下 2021-12-03 13:33:33.927 ERROR 7228 [ main] o.s.b.d.LoggingFailureAnalysisReporter : *************************** APPL
错误1:gradle项目控制台输出为乱码 # 解决方案:https://blog.csdn.net/weixin_43501566/article/details/112482302 # 在gradle-wrapper.properties 添加以下内容 org.gradle.jvmargs=-Df
错误还原:在查询的过程中,传入的workType为0时,该条件不起作用 &lt;select id=&quot;xxx&quot;&gt; SELECT di.id, di.name, di.work_type, di.updated... &lt;where&gt; &lt;if test=&qu
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct redisServer’没有名为‘server_cpulist’的成员 redisSetCpuAffinity(server.server_cpulist); ^ server.c: 在函数‘hasActiveC
解决方案1 1、改项目中.idea/workspace.xml配置文件,增加dynamic.classpath参数 2、搜索PropertiesComponent,添加如下 &lt;property name=&quot;dynamic.classpath&quot; value=&quot;tru
删除根组件app.vue中的默认代码后报错:Module Error (from ./node_modules/eslint-loader/index.js): 解决方案:关闭ESlint代码检测,在项目根目录创建vue.config.js,在文件中添加 module.exports = { lin
查看spark默认的python版本 [root@master day27]# pyspark /home/software/spark-2.3.4-bin-hadoop2.7/conf/spark-env.sh: line 2: /usr/local/hadoop/bin/hadoop: No s
使用本地python环境可以成功执行 import pandas as pd import matplotlib.pyplot as plt # 设置字体 plt.rcParams[&#39;font.sans-serif&#39;] = [&#39;SimHei&#39;] # 能正确显示负号 p
错误1:Request method ‘DELETE‘ not supported 错误还原:controller层有一个接口,访问该接口时报错:Request method ‘DELETE‘ not supported 错误原因:没有接收到前端传入的参数,修改为如下 参考 错误2:cannot r
错误1:启动docker镜像时报错:Error response from daemon: driver failed programming external connectivity on endpoint quirky_allen 解决方法:重启docker -&gt; systemctl r
错误1:private field ‘xxx‘ is never assigned 按Altʾnter快捷键,选择第2项 参考:https://blog.csdn.net/shi_hong_fei_hei/article/details/88814070 错误2:启动时报错,不能找到主启动类 #
报错如下,通过源不能下载,最后警告pip需升级版本 Requirement already satisfied: pip in c:\users\ychen\appdata\local\programs\python\python310\lib\site-packages (22.0.4) Coll
错误1:maven打包报错 错误还原:使用maven打包项目时报错如下 [ERROR] Failed to execute goal org.apache.maven.plugins:maven-resources-plugin:3.2.0:resources (default-resources)
错误1:服务调用时报错 服务消费者模块assess通过openFeign调用服务提供者模块hires 如下为服务提供者模块hires的控制层接口 @RestController @RequestMapping(&quot;/hires&quot;) public class FeignControl
错误1:运行项目后报如下错误 解决方案 报错2:Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:3.8.1:compile (default-compile) on project sb 解决方案:在pom.
参考 错误原因 过滤器或拦截器在生效时,redisTemplate还没有注入 解决方案:在注入容器时就生效 @Component //项目运行时就注入Spring容器 public class RedisBean { @Resource private RedisTemplate&lt;String
使用vite构建项目报错 C:\Users\ychen\work&gt;npm init @vitejs/app @vitejs/create-app is deprecated, use npm init vite instead C:\Users\ychen\AppData\Local\npm-