python-3.x - 根据更改的列条件在数据框中添加行
问题描述
我有一个看起来像这样的数据框。
name Datetime col_3 col_4
8 'Name 1' 2017-01-02T00:00:00 160 1600
9 'Name 1' 2017-01-02T00:00:00 160 1600
10 'Name 1' 2017-01-03T00:00:00 160 1800
.. ... ... ... ...
150 'Name 2' 2004-10-13T00:00:00 160 1600
151 'Name 2' 2004-10-14T00:00:00 160 1600
152 'Name 2' 2004-10-15T00:00:00 160 1800
.. ... ... ... ...
435 'Name 3' 2009-01-02T00:00:00 160 1600
436 'Name 3' 2009-01-02T00:00:00 170 1500
437 'Name 3' 2009-01-03T00:00:00 160 1800
.. ... ... ... ...
本质上,我想删除“名称”列,并且每次“名称-#”字段更改时我想添加一行,仅包含“名称-#”:
Datetime col_2 col_3
7 'Name 1'
8 2017-01-02T00:00:00 160 1600
9 2017-01-02T00:00:00 160 1600
.. ... ... ... ...
149 'Name 2'
150 2004-10-13T00:00:00 160 1600
151 2004-10-14T00:00:00 160 1600
.. ... ... ... ...
435 'Name 3'
436 2009-01-02T00:00:00 170 1500
437 2009-01-03T00:00:00 160 1800
.. ... ... ... ...
我知道如何在名称列更改后添加行,但我需要自动化添加日期时间列中的“名称-#”字段的过程,以便可以通过代码放置相同样式的不同数据。任何帮助将非常感激。谢谢!
解决方案
我想你所追求的是groupby
df.groupby('name')
所以你可以做
for name, dfsub in df.groupby('name'):
...
这将允许您单独处理每个组
一个例子
import pandas as pd
df = pd.DataFrame( {
'Name': ['a','a','a','b','b','b','b','c','c','d','d','d'],
'B': [5,5,6,7,5,6,6,7,7,6,7,7],
'C': [1,1,1,1,1,1,1,1,1,1,1,1]
} )
给出一个数据框
Name B C
0 a 5 1
1 a 5 1
2 a 6 1
3 b 7 1
4 b 5 1
5 b 6 1
6 b 6 1
7 c 7 1
8 c 7 1
9 d 6 1
10 d 7 1
11 d 7 1
现在我们可以看看 groupby 的输出。循环中的 groupby 返回两个内容,第一个是组名,第二个是数据帧的子集,其中包含按其分组的数据。
for name, dfsub in df.groupby('Name'):
print("Name is :"+name)
dfsub1 = dfsub.drop(‘Name’, axis=1)
print(dfsub1)
print() # new line for clarity
这给了
Name is :a
B C
0 5 1
1 5 1
2 6 1
Name is :b
B C
3 7 1
4 5 1
5 6 1
6 6 1
Name is :c
B C
7 7 1
8 7 1
Name is :d
B C
9 6 1
10 7 1
11 7 1
你在哪里得到你正在处理的名字,然后是dfsub
只包含你正在查看的数据的数据框。
推荐阅读
- url - 在 Postman 中将文件路径作为参数传递
- xaml - 可以更改 UWP 拖放 (DragUI) 标题的字体吗?
- rust - 在 Rust 中按值传递数组
- html - VBA:在 Outlook 电子邮件中嵌入 PNG - 为自己工作而不为他人显示
- spring-boot - 禁用 Spring Security 导致无法加载应用程序上下文
- javascript - 当 scrollY 等于 0.52 时动画 - Next.js ( 使用 framer-motion )
- node.js - 使用 app.js (express) 运行 NestJS 应用程序
- node.js - 如何使用 AWS Lambda (nodeJS) 查询 AWS 外部的 MySQL 数据库?
- rust - std::thread::JoinHandle::join 如何捕捉恐慌?
- c++ - 以某种方式读取文件中的数据