以下是我的数据框
import pandas as pd
df = pd.DataFrame({'name': ['jon','sam','jane','bob'],
'age': [30,25,18,26],
'sex':['male','male','female','male']})
age name sex
0 30 jon male
1 25 sam male
2 18 jane female
3 26 bob male
Run Code Online (Sandbox Code Playgroud)
我想在第一个位置插入一个新行
姓名:院长,年龄:45岁,性别:男
age name sex
0 45 dean male
1 30 jon male
2 25 sam male
3 18 jane female
4 26 bob male
Run Code Online (Sandbox Code Playgroud)
在熊猫中做到这一点的最佳方法是什么?
edy*_*y13 20
可能这不是最有效的方式,但是:
df.loc[-1] = ['45', 'Dean', 'male'] # adding a row
df.index = df.index + 1 # shifting index
df.sort_index(inplace=True)
Run Code Online (Sandbox Code Playgroud)
输出:
age name sex
0 45 Dean male
1 30 jon male
2 25 sam male
3 18 jane female
4 26 bob male
Run Code Online (Sandbox Code Playgroud)
Max*_*axU 17
如果它将是一个频繁的操作,那么首先将数据收集到列表然后使用pd.concat([], ignore_index=True)(类似于@Serenity的解决方案)是有意义的(在性能方面):
演示:
data = []
# always inserting new rows at the first position - last row will be always on top
data.insert(0, {'name': 'dean', 'age': 45, 'sex': 'male'})
data.insert(0, {'name': 'joe', 'age': 33, 'sex': 'male'})
#...
pd.concat([pd.DataFrame(data), df], ignore_index=True)
In [56]: pd.concat([pd.DataFrame(data), df], ignore_index=True)
Out[56]:
age name sex
0 33 joe male
1 45 dean male
2 30 jon male
3 25 sam male
4 18 jane female
5 26 bob male
Run Code Online (Sandbox Code Playgroud)
PS我不会把.append(),pd.concat(),.sort_index()过于频繁(每单排),因为它是相当昂贵.所以我的想法是以大块的方式来做...
@edyvedy13 的解决方案对我很有用。但是,它需要更新以弃用熊猫的sort方法 - 现在替换为sort_index.
df.loc[-1] = ['45', 'Dean', 'male'] # adding a row
df.index = df.index + 1 # shifting index
df = df.sort_index() # sorting by index
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
41305 次 |
| 最近记录: |