Colderleo's blog Colderleo's blog
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)

Colder Leo

热爱代码的打工人
首页
Linux
C++
Python
前端
工具软件
mysql
索引
关于
GitHub (opens new window)
  • 1-django使用
  • centos部署Nginx+uwsgi+django - blog
  • django-admin完全自定义某个模块的页面
  • easy_select2 编辑页面添加外键选择搜索
  • 使用vscode开发python
  • python自定义异常处理with,上下文context管理器
  • python读写excel,xlsx 模块选择
  • python多线程多进程协程
  • TemporaryFile
  • threading用法
  • ubantu设置python优先级
  • conda anacodna 命令行用法
  • 我写的常用工具函数
  • 0-python常用函数
  • smtp发送邮件
  • pandas用法
    • loc和iloc用法
    • 其他
  • datetime类,时间差
  • format
  • enumerate遍历数组时获取index
  • argv
  • generator 生成器
  • GIL锁、多线程
  • linux用源文件安装python3
  • list sort排序
  • logging日志
  • mulitporcessing共享变量
  • OrderedDict
  • path
  • pip用法
  • pymysql用法 - python连接mysql
  • python bash解释器,脚本前两行,
  • python docstring格式 PEP 257
  • python logging获取logger信息
  • python交互式窗口如何进行多行输入
  • virtualenv用法
  • 标准差
  • 单例模式
  • 函数中定义static变量
  • 切片
  • 去掉字符串中emoji字符
  • 去掉字符串中的空行
  • 全局变量、global和nonlocal
  • 文字识别pytesseract
  • 析构函数和del
  • 用python制作游戏外挂
  • 正则表达式,函数替换字符串
  • 装饰器
  • pycharm中运行pyqt时不报错
  • python 写文件
  • Python
gaoliu
2022-06-03
目录

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

# 其他

# 读取没有表头的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

一列数据的类型是 pandas.core.series.Series 二维数据的类型 pandas.core.frame.DataFrame 三维数组 Panel 四维数组 Panel4D 更多维数组 PanelND

编辑 (opens new window)
上次更新: 2022/07/20, 18:03:39
smtp发送邮件
datetime类,时间差

← smtp发送邮件 datetime类,时间差→

最近更新
01
通过模板实现结构体成员拷贝-按成员名匹配
05-07
02
c++17通过模板获取类成员的个数
05-01
03
avx-sse切换惩罚
04-30
更多文章>
Theme by Vdoing | Copyright © 2019-2023 Colder Leo | MIT License
  • 跟随系统
  • 浅色模式
  • 深色模式
  • 阅读模式
×