pandas用法
# loc和iloc用法
loc表示按key筛选, iloc是按index筛选, 筛选方法和python切片规则相同
df = pd.DataFrame([{'A':1, 'B':10, 'C':100}, {'A':2, 'B':20, 'C':200}, {'A':3, 'B':30, 'C':300}])
df = df.loc[[0,2],['A','C']] # loc表示按key筛选, [0,1]是行筛选 ['A','C']是列筛选。
df = df.loc[:,['A','C']] # 可以用:表示选择所有,跟python的切片规则一样,左开右闭
df = df.loc[:,'B':'C'] #既可以是list,也可以是冒号切片
df = df.iloc[[1,2],1:3] # iloc跟loc用法类似,区别在于loc是key索引,iloc是index索引
series1 = df.iloc[:,0] #如果只提取一列,那么得到的是一维的series,不再是DataFrame
#筛选列名为'A','C'的列,形成新的df 参考: <https://blog.csdn.net/htuhxf/article/details/88221418>
df = df[['A','C']] #直接用中括号,表示按照列的key提取,提取 A和C列
df = df.loc[:,['A','C']] #也可以用loc来提取
# 根据条件筛选行,形成新的df 注意筛选条件里要带括号
df = df[(df['A']==2) & (df['B']==20)]
# 根据行的key获取行的index
print(df.index.get_loc(2)) # 2
# 根据列的key获取列的index 可以在iloc里用
print(df.columns.get_loc('A'), df.columns.get_loc('B')) # 0 1
# 类似二维字典取值:
print(df['B'][0])
df['B'][0] += 1
print(df['B'][0])
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
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
# 其他
# 读取没有表头的csv
df = pd.read_csv('data.csv', sep='\t',header=None, names=['var_code','var_name','var_desc'])
# 修改列名 inplace=True表示覆盖原有的列
dataframe.rename(columns = {"old_name": "new_name"})
dataframe.rename(columns = {"old1": "new1", "old2":"new2"}, inplace=True)
# 通过list创建dataframe
data_list = [{'A':1, 'B':10}, {'A':2, 'B':20}, {'A':3, 'B':30}]
df = pd.Dataframe(data_list)
data_list = [["xiaolei",20,10081],["xiaowu",30,10082]]
df = pd.DataFrame(data_list)
# 合并dataframe
# https://blog.csdn.net/xue_11/article/details/118424380
t = pd.concat([t1,t2]) #默认上下堆叠
t = pd.concat([t1,t2], axis=1) #左右堆叠
df = df.append(df2) # 追加 并不修改df1
#排序
df = pd.DataFrame([{'A':5, 'B':50}, {'A':2, 'B':20}, {'A':3, 'B':30}])
df = df.sort_values(['A'])
# 增加一列数据 shift(1)表示取当前列的上一行的值
data_list = [{'A':1, 'B':10}, {'A':2, 'B':20}, {'A':3, 'B':30}]
df = pd.DataFrame(data_list)
df['C'] = df['A'] + df['B']
df['D'] = df['A'] + df['B'].shift(1)
df['E'] = 'ee'
print(df)
### 输出
A B C D E
0 1 10 11 NaN ee
1 2 20 22 12.0 ee
2 3 30 33 23.0 ee
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
43
44
45
46
47
48
49
50
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
43
44
45
46
47
48
49
50
一列数据的类型是 pandas.core.series.Series 二维数据的类型 pandas.core.frame.DataFrame 三维数组 Panel 四维数组 Panel4D 更多维数组 PanelND
编辑 (opens new window)
上次更新: 2022/07/20, 18:03:39