把value插入dataframe的指定位置loc中,若插入的数据value已在dataframe中,则返回 错误valueerror,如想完成重复值的插入需要把allow_duplicates设置为true
insert方法详解
1
|
dataframe.insert(loc, column, value, allow_duplicates = false)
|
参数:
raises a valueerror if column is already contained in the dataframe, unless allow_duplicates is set to true.
parameters:
loc
:参数column插入的位置,如果想插入到第一例则为0,取值范围: 0 <= loc <= len(columns),其中len(columns)为dataframe的列数
column
:给 插入数据value取列名,可为数字,字符串等
value
:可以是整数,series或者数组等
allow_duplicates
: 默认 false
1.创建数据
1
2
3
4
5
6
7
8
9
10
11
12
|
import pandas as pd
import numpy as np
data = {
'school' : [ '北京大学' , '清华大学' , '山西大学' , '山西大学' , '武汉大学' ],
'name' : [ '江路离' , '沈希梦' , '来使鹭' , '陈曦冉' , '姜浩然' ],
'no.' : [ 20001943 , 300044451 , 20190006 , 20191234 , 1242522 ]
}
# data = list(data) <-> data = list(data.keys)
# data = list(data.values())
frame = pd.dataframe(data)
print (frame)
|
结果:
2.插入数据
1
2
|
frame.insert( 0 , 'num' , np.ones( 5 ))
print (frame)
|
结果:
1
2
|
frame.insert( len (frame.columns), 'list' , [x for x in range ( 5 )])
print (frame)
|
3.插入已存在数据
结果:
4.把allow_duplicates设置为true,可实现重复值的插入
1
2
|
frame.insert( 0 , 'num' , np.ones( 5 ), allow_duplicates = true)
print (frame)
|
补充:pandas 中的insert(), pop()在dataframe的指定位置中插入某一列
在pandas中,del、drop和pop方法都可以用来删除数据,insert可以在指定位置插入数据。
可以看看以下示例。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
import pandas as pd
from pandas import dataframe, series
data = dataframe({ 'name' :[ 'yang' , 'jian' , 'yj' ], 'age' :[ 23 , 34 , 22 ], 'gender' :[ 'male' , 'male' , 'female' ]})
#data数据
'''
in[182]: data
out[182]:
age gender name
0 23 male yang
1 34 male jian
2 22 female yj
'''
#删除gender列,不改变原来的data数据,返回删除后的新表data_2。axis为1表示删除列,0表示删除行。inplace为true表示直接对原表修改。
data_2 = data.drop( 'gender' , axis = 1 , inplace = false)
'''
in[184]: data_2
out[184]:
age name
0 23 yang
1 34 jian
2 22 yj
'''
#改变某一列的位置。如:先删除gender列,然后在原表data中第0列插入被删掉的列。
data.insert( 0 , '性别' , data.pop( 'gender' )) #pop返回删除的列,插入到第0列,并取新名为'性别'
'''
in[185]: data
out[186]:
性别 age name
0 male 23 yang
1 male 34 jian
2 female 22 yj
'''
#直接在原数据上删除列
del data[ '性别' ]
'''
in[188]: data
out[188]:
age name
0 23 yang
1 34 jian
2 22 yj
'''
|
以上为个人经验,希望能给大家一个参考,也希望大家多多支持服务器之家。如有错误或未考虑完全的地方,望不吝赐教。
原文链接:https://blog.csdn.net/shixiu_yuan/article/details/90205542