惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

博客园 - 三生石上(FineUI控件)
WordPress大学
WordPress大学
S
SegmentFault 最新的问题
小众软件
小众软件
T
Tailwind CSS Blog
博客园 - 聂微东
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
人人都是产品经理
人人都是产品经理
V
Visual Studio Blog
罗磊的独立博客
有赞技术团队
有赞技术团队
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
让小产品的独立变现更简单 - ezindie.com
让小产品的独立变现更简单 - ezindie.com
Jina AI
Jina AI
量子位
云风的 BLOG
云风的 BLOG
Recent Announcements
Recent Announcements
Hugging Face - Blog
Hugging Face - Blog
P
Proofpoint News Feed
N
Netflix TechBlog - Medium
GbyAI
GbyAI
钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
腾讯CDC
美团技术团队

老董笔记

尚硅谷机构在哪?尚硅谷培训怎么样?靠谱吗-互联网IT百科 韩顺平介绍,传智讲师,开办泰牛,入尚硅谷等一系列-互联网IT百科 pandas多重索引标准样式(写入excel有空行)-互联网IT百科 cannot join with no overlapping index names-互联网IT百科 pandas多列变多行(即宽表变长表)melt和stack函数-互联网IT百科 pandas多行转多列(长表变宽表)pivot和unstack-互联网IT百科 Index contains duplicate entries, cannot reshape完美解决-互联网IT百科 single positional indexer is out-of-bounds-互联网IT百科 Can only compare identically-labeled Series objects-互联网IT百科 pandas transform用法详解(多个案例)-互联网IT百科 python四舍五入精确实现-互联网IT百科 pandas的groupby使用apply分组排序-互联网IT百科 index 0 is out of bounds for axis 0 with size 0-互联网IT百科 pandas分组过滤filter函数-互联网IT百科 联想Win10系统如何禁用触摸屏关闭触摸-互联网IT百科 groupby分组计算transform转换返回相同长度序列-互联网IT百科 brooks seo教程python教程,brooks seo教程网盘,布鲁seo资源-互联网IT百科 电脑右键文件夹一直转圈电卡死怎么回事-互联网IT百科 施琪嘉的心理成长课(荐)-互联网IT百科 百度SEO公司_SEO推广公司哪家好_SEO外包服务如何选-老董笔记 groupby后agg同1列用多个聚合函数、不同列用不同函数、自定义函数-互联网IT百科 pandas的groupby单列多列分组聚合运算-互联网IT百科 DataFrameGroupBy对象及分组个数、分组大小、组名索引、组数据详解-互联网IT百科 pandas中groupby之Grouper and axis must be same length-互联网IT百科 pandas中groupby的分组原理-互联网IT百科 pandas的groupby的使用详解大全-互联网IT百科 openpyxl单元格自动换行强制换行Alignment(wrapText=True)-互联网IT百科 python教程全套(可就业)-互联网IT百科 联想win10系统CPU显示100%,电脑呼呼响怎么回事-互联网IT百科 如何自制CPU,CPU原理是怎么样的?-互联网IT百科
Dataframe数据的增删改查,对齐(相加),转置,按值(索引)排序-互...
2020-10-05 · via 老董笔记

  数据转置

  行列标签一起转置,利用.T实现

# -*- coding: utf-8 -*-
import pandas as pd

d = {'col1': [1,2,3], 'col2': [4,5,6],'col3':[7,8,9]}
df = pd.DataFrame(data=d)
print(df)
print('-----------')
print(df.T)
   col1  col2  col3
0     1     4     7
1     2     5     8
2     3     6     9
-----------
      0  1  2
col1  1  2  3
col2  4  5  6
col3  7  8  9

  数据修改

  1、通过直接索引修改整行和列

  2、使用df.at修改单个值(建议新值和旧值数据类型应保持一致)

  3、参考上一节loc和iloc的用法,使用df.loc或者df.iloc来灵活赋值

  4、复制操作时候一个经典错误参考SettingWithCopyWarning

# -*- coding: utf-8 -*-
import pandas as pd

d = {'col1': [1,2,3], 'col2': [4,'66',6],'col3':[7,8,9]}
df = pd.DataFrame(data=d)
print(df)
print('------------------')

df['col1'] = 'aaa' # 直接修改一列
print(df)
print('-------------------')

df.at[1,'col2'] = 'py' #索引为1的行的col2列
print(df)
print('-----------')

# df.loc[[1]]['col1'] = 'bbb' # 这样是错的,不生效
df.loc[[1],'col1'] = 'bbb' # 这样是对的
print(df)
   col1 col2  col3
0     1    4     7
1     2   66     8
2     3    6     9
------------------
  col1 col2  col3
0  aaa    4     7
1  aaa   66     8
2  aaa    6     9
-------------------
  col1 col2  col3
0  aaa    4     7
1  aaa   py     8
2  aaa    6     9
-----------
并未变化
  col1 col2  col3
0  aaa    4     7
1  bbb   py     8
2  aaa    6     9

  数据删除

  1、del

  2、drop函数

  drop(labels=None, axis=0, index=None, columns=None, level=None, inplace=False, errors='raise')

  常用操作

  df.drop(['a', 'd'], axis=0) 删除索引为a、d的行,默认axis=0

  df.drop(['a', 'd'], axis=1) 删除索引为a、d的列

  df.drop(['a', 'd'], axis=1 ,inplace=False) 生成新df,不改变原df。默认是False

  df.drop(['a', 'd'], axis=1 ,inplace=False) 改变原df

# -*- coding: utf-8 -*-
import pandas as pd

d = {'col1': [1,2,3], 'col2': [4,'66',6],'col3':[7,8,9]}
df = pd.DataFrame(data=d)
print(df)
print('------------------')

# del删除col1列
del(df['col1'])
print(df)
print('------------')

# drop删除索引为1的行
res = df.drop([1])
print(res)
print('-------------')

#删除索引为col2的列
df.drop(['col2'],axis=1,inplace=True)
print(df)
   col1 col2  col3
0     1    4     7
1     2   66     8
2     3    6     9
------------------
  col2  col3
0    4     7
1   66     8
2    6     9
------------
  col2  col3
0    4     7
2    6     9
-------------
   col3
0     7
1     8
2     9

  对齐(相加)

# -*- coding: utf-8 -*-
import pandas as pd

d1 = {'col1': [1, 2], 'col2': [3, 4]}
d2 = {'col1': [4, 8], 'col2': [7, 9],'col3':[1,2]}
df1 = pd.DataFrame(data=d1)
df2 = pd.DataFrame(data=d2)
df = df1 + df2
print(df)

   col1  col2  col3
0     5    10   NaN
1    10    13   NaN

  排序

  1)按值排序

  sort_values(by, axis=0, ascending=True, inplace=False, kind='quicksort', na_position='last', ignore_index=False, key=None)

  常用参数:

  by:字符串或者列表;如果axis=0,那么by="列名";如果axis=1,那么by="行名"。

  axis:默认值0,默认按照列排序,即纵向排序;如果为1,则是横向排序。

  ascending:布尔型,True则升序,如果by=['列名1','列名2'],则该参数可以是[True, False],即第一字段升序,第二个降序。

  inplace:布尔型,默认False代表返回新的对象。

  na_position:{‘first’, ‘last’}, 默认是‘last’,默认缺失值排在最后面。

  单列排序及多列排序

# -*- coding: utf-8 -*-
import pandas as pd

df = pd.DataFrame({'b':[1,2,3,2],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
print(df)
print('------------')

df1 = df.sort_values(by='b',axis=0)
print(df1)
print('--------------')

# 多列排序
df2 = df.sort_values(by=['b','a'],axis=0,ascending=[False,True])
print(df2)
   b  a  c
2  1  4  1
0  2  3  3
1  3  2  8
3  2  1  2
------------
   b  a  c
2  1  4  1
0  2  3  3
3  2  1  2
1  3  2  8
--------------
   b  a  c
1  3  2  8
3  2  1  2
0  2  3  3
2  1  4  1

  2)按索引排序

  sort_index函数

sort_index(axis=0, level=None, ascending=True, inplace=False, kind='quicksort', na_position='last', sort_remaining=True, ignore_index=False, key=None)

  常用参数

  axis:默认值0,0代表行索引排序,1代表按照列索引排序。

  ascending:布尔型,True则升序

  inplace:布尔型,是否用排序后的数据替换现有的数据

  na_position:{‘first’, ‘last’}, 默认是‘last’,默认缺失值排在最后面。

# -*- coding: utf-8 -*-
import pandas as pd

df = pd.DataFrame({'b':[1,2,2,3],'a':[4,3,2,1],'c':[1,3,8,2]},index=[2,0,1,3])
print(df)
print('----------')

#默认按“行标签”升序排序
df1 = df.sort_index()
print(df1)
print('-------------')

#按“列标签”降排序
df2 = df.sort_index(axis=1,ascending=False)
print(df2)
   b  a  c
2  1  4  1
0  2  3  3
1  2  2  8
3  3  1  2
----------
   b  a  c
0  2  3  3
1  2  2  8
2  1  4  1
3  3  1  2
-------------
   c  b  a
2  1  1  4
0  3  2  3
1  8  2  2
3  2  3  1

很赞哦!

python编程网提示:转载请注明来源www.python66.com。
有宝贵意见可添加站长微信(底部),获取技术资料请到公众号(底部)。同行交流请加群 python学习会