Dataframe创建

  1. 由数组/list组成的字典
data1 = {'a':[1,2,3],'b':[3,4,5],'c':[5,6,7]}
df1 = pd.DataFrame(data1)
print(df1)
  • 输出
   a  b  c
0  1  3  5
1  2  4  6
2  3  5  7
  • 添加索引
df1 = pd.DataFrame(data1,index = ['f1','f2','f3'])


2. 由Series组成的字典

data1 = {'one':pd.Series(np.random.rand(2)),'two':pd.Series(np.random.rand(3))}  # 没有设置index的Series
df1 = pd.DataFrame(data1,index = ['a','b','c'])
print(df1)

较短的序列补0

        one       two
a  0.065605  0.217466
b  0.973106  0.908904
c       NaN  0.663079
  1. 通过二维数组直接创建
ar = np.random.rand(9).reshape(3,3)
print(ar)
df1 = pd.DataFrame(ar)
df2 = pd.DataFrame(ar, index = ['a', 'b', 'c'], columns = ['one','two','three'])
          0         1         2
0  0.339401  0.773847  0.253083
1  0.281513  0.028760  0.751607
2  0.347467  0.252451  0.689796one       two     three
a  0.339401  0.773847  0.253083
b  0.281513  0.028760  0.751607
c  0.347467  0.252451  0.689796

Dataframe索引与切片

列索引和行索引
df

                a          b          c          d
one    94.473099  30.077407  70.953102   9.416436
two    41.958628  15.709462  47.400670  56.909647
three  14.539075   8.398997  80.139084  83.250374

1. 列索引
按照列名选择列,只选择一列输出Series,选择多列输出Dataframe

data1 = df['a']
data2 = df[['a','c']]
data1 = df['a']
one      94.473099
two      41.958628
three    14.539075
Name: a, dtype: float64 <class 'pandas.core.series.Series'>
data2 = df[['a','c']]
              a          c
one    94.473099  70.953102
two    41.958628  47.400670
three  14.539075  80.139084 <class 'pandas.core.frame.DataFrame'>

2. 行索引
按照index选择行,只选择一行输出Series,选择多行输出Dataframe
df.loc['one'] – 按标签索引
df.iloc[0] – 按位置索引

data3 = df.loc['one']#单标签索引
data4 = df.loc[['one','two']]#逐个选择--多标签索引
data5 = df.loc['one':'three']#范围--切片索引

data3

a    94.473099
b    30.077407
c    70.953102
d     9.416436
Name: one, dtype: float64 <class 'pandas.core.series.Series'>

data4

    a          b          c          d
one  94.473099  30.077407  70.953102   9.416436
two  41.958628  15.709462  47.400670  56.909647 <class 'pandas.core.frame.DataFrame'>

data5

  a          b          c          d
one    94.473099  30.077407  70.953102   9.416436
two    41.958628  15.709462  47.400670  56.909647
  • df.iloc[] - 按照整数位置做行索引

    • 单位置索引 df.iloc[0] ———与 df.loc['one']相同
    • 多位置索引 df.iloc[[2,1]] ———与 df.loc['three','two']相同
    • 切片索引 df.iloc[0:2]———与 df.loc['one':'three']相同

3. 布尔型索引
df

     a          b          c          d
one    52.462365  92.336489  95.512607  85.587735
two    34.853185  12.887189  69.575950  79.705655
three  90.755125  98.826032  12.686749  99.404063
four   75.758254  97.520349  36.782117  18.956917
  • 布尔型矩阵索引
    b1 = df < 20得到与df同型的矩阵
 a      b      c      d
one    False  False  False  False
two    False   True  False  False
three  False  False   True  False
four   False  False  False   True

通过布尔型矩阵索引df[b1]False处的值为NaN,True的为相应值

 a          b          c          d
one   NaN        NaN        NaN        NaN
two   NaN  12.887189        NaN        NaN
three NaN        NaN  12.686749        NaN
four  NaN        NaN        NaN  18.956917
  • 布尔型序列/行索引
    b2 = df['a'] > 50,得到布尔型序列
one       True
two      False
three     True
four      True
Name: a, dtype: bool <class 'pandas.core.series.Series'>
df[b2]

布尔型序列索引,得到的是布尔型序列为true所在的行

 a          b          c          d
one    52.462365  92.336489  95.512607  85.587735
three  90.755125  98.826032  12.686749  99.404063
four   75.758254  97.520349  36.782117  18.956917

不能通过相似的方法对行进行判断。列得到的是列名,与原始的DataFrame的index['one','two','three','four'],无法匹配

错误提示Boolean Series key will be reindexed to match DataFrame index.
通过行索引方式为。df在行索引为真时,为原始值,其余地方为NaN


多列索引和多行索引

b3 = df[['a','b']] > 50 #两列
              a      bone     True   Truetwo    False  Falsethree   True   Truefour    True   True <class 'pandas.core.frame.DataFrame'>
df[b3] 布尔型DataFrame中为True的地方有值,其余的均为NaN.多行索引也是同样的效果
 a          b   c   d
one    52.462365  92.336489 NaN NaN
two          NaN        NaN NaN NaN
three  90.755125  98.826032 NaN NaN
four   75.758254  97.520349 NaN NaN
  • 多重索引:比如同时索引行和列
    df['a'].loc[['one','three']]
one      52.462365
three    90.755125
Name: a, dtype: float64
print(df[['b','c','d']].iloc[::2])   # 选择b,c,d列的one,three行
          b          c          d
one      92.336489  95.512607  85.587735
three    98.826032  12.686749  99.404063

pandas(二) -- Dataframe创建及索引相关推荐

  1. Pandas(二)--DataFrame结构

    DataFrame结构 DataFrame 一个表格型的数据结构,既有行标签(index),又有列标签(columns),它也被称异构数据表,所谓异构,指的是表格中每列的数据类型可以不同,比如可以是字 ...

  2. python dataframe去掉索引_python中pandas.DataFrame(创建、索引、增添与删除)的简单操作方法介绍...

    这篇文章python中pandas.DataFrame(创建.索引.增添与删除)的简单操作方法介绍,其中包括创建.索引.增添与删除等的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看 ...

  3. dataframe两个表合并_Part25:Pandas基础(Series,DataFrame类的创建、索引、切片、算术方法)...

    一.为什么学习pandas numpy已经可以帮助我们进行数据的处理了,那么学习pandas的目的是什么呢? numpy能够帮助我们处理的是数值型的数据,当然在数据分析中除了数值型的数据还有好多其他类 ...

  4. python pandas dataframe 不显示索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...

    前言 最近在网上搜了许多关于pandas.DataFrame的操作说明,都是一些基础的操作,但是这些操作组合起来还是比较费时间去正确操作DataFrame,花了我挺长时间去调整BUG的.我在这里做一些 ...

  5. python dataframe去掉索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...

    这篇文章主要介绍了python中pandas.DataFrame的简单操作方法,其中包括创建.索引.增添与删除等的相关资料,文中介绍的非常详细,需要的朋友可以参考借鉴,下面来一起看看吧. 前言 最近在 ...

  6. python删除列索引_python中pandas.DataFrame的简单操作方法(创建、索引、增添与删除)...

    前言 最近在网上搜了许多关于pandas.DataFrame的操作说明,都是一些基础的操作,但是这些操作组合起来还是比较费时间去正确操作DataFrame,花了我挺长时间去调整BUG的.我在这里做一些 ...

  7. pandas创建复合索引dataframe仿真数据集实战(create a multiIndex dataframe)

    pandas创建复合索引dataframe仿真数据集实战(create a multiIndex dataframe) 目录 pandas创建复合索引dataframe仿真数据集实战(create a ...

  8. pandas使用pd.MultiIndex.from_product函数和pd.MultiIndex.from_tuples函数创建复合索引dataframe数据实战

    pandas使用pd.MultiIndex.from_product函数和pd.MultiIndex.from_tuples函数创建复合索引dataframe数据实战 目录 pandas使用pd.Mu ...

  9. pandas使用datetime创建示例dataframe:包含完整的时分秒信息、创建时间索引、使用不同的时间频率、date_range中参数freq的偏移量别名

    pandas使用datetime创建示例dataframe:包含完整的时分秒信息.创建时间索引.使用不同的时间频率.date_range中参数freq的偏移量别名 目录

最新文章

  1. mysql学习三:mysql的组成部分
  2. TOAD FOR MYSQL 进行数据插入时乱码的解决办法---MariaDB 5.5
  3. 各种花里胡哨的管理系统介绍
  4. AndroidVerifyBoot
  5. MySQL 的日语认证有了,中文呢?
  6. 2018年自然语言处理最值得关注的研究、论文和代码
  7. linux elf 视频,linux 实例讲解elf文件
  8. python3 str 数字类型判断 str.isdecimal(), isdigit(), isnumeric()
  9. python能查询MySQL视图_python - 在使用Django的视图中,如何从mysql检索数据,并显示它_python_酷徒编程知识库...
  10. Codeforces 699D Fix a Tree 并查集
  11. ❤️和广告说再见,将“沉浸式阅读”进行到底❤️
  12. 基于node.js的微博博客实现
  13. 漫话:如何给女朋友解释什么是撞库、脱库和洗库?
  14. 易语言执行mysql命令_易语言执行sql进度条 易语言mysql
  15. 计算机无法投影,win10专业版投影失败提示:你的电脑不能投影到其他屏幕的解决办法...
  16. TBtools:基因家族分析简单流程
  17. 微图影像地图导出拼接大图的参数说明
  18. Ubuntu下安装adobe reader
  19. 利用matlab求解非线性规划问题
  20. 人形机器人视觉处理——定位抓取

热门文章

  1. php mvc cms企业站,Phpcms V9程序目录结构及MVC简析
  2. Scikit-Learn 机器学习笔记 -- SVM
  3. 创新学习对象1-陕西省网络与系统安全重点实验室研究员的李光夏老师
  4. FPGA笔录(2)-触发器与锁存器原理
  5. 【机器学习】Auto-Sklearn:使用 AutoML 加速你的机器学习模型
  6. 【NLP】在机器学习中开发情感分析器的5种方法
  7. 【论文解读】GCN论文总结
  8. 【深度学习】搞懂 Vision Transformer 原理和代码,看这篇技术综述就够了
  9. 聊聊工业界做机器学习的里程碑
  10. AI基础:提供pdf打包下载了!(更新了25集)