精华内容
下载资源
问答
  • Pandas判断dataframe是否为空 目录 Pandas判断dataframe是否为空 #仿真数据 #查看dataframe是否为空 ​#删除dataframe的数据列后查看dataframe是否为空 #全nan值的dataframe是否为空 ​#全nan值的dataframe...
    展开全文
  • 一、pandas pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和...dataframe.empty加if条件判断文件是否为空,如果返回的dataframe为空,可能导致某些逻辑错误。 data = p

    一、pandas

    pandas 是基于NumPy 的一种工具,该工具是为解决数据分析任务而创建的。Pandas 纳入了大量库和一些标准的数据模型,提供了高效地操作大型数据集所需的工具。pandas提供了大量能使我们快速便捷地处理数据的函数和方法。你很快就会发现,它是使Python成为强大而高效的数据分析环境的重要因素之一。

    二、if条件判断DataFrame是否为空

    dataframe.empty加if条件判断文件是否为空,如果返回的dataframe为空,可能导致某些逻辑错误。

    data = pd.read_csv(filename, skiprows=1, header=None, error_bad_lines=False)
    
    if data.empty:
         do empty
    else:
         do not empty
    data = pd.read_csv(filename, skiprows=1, header=None, error_bad_lines=False)
    if not data.empty:
        do not empty
    else:
        do empty

    三、DataFrame取某一列

    # one method
    dataframe[b][dataframe[a]==1].values[0]
    
    
    # two method
    dataframe[dataframe[a]==1][b].values[0]

    三、DataFrame按行按列遍历的方式

    DataFrame是一种矩阵形式,所有的行名保存在index里,列名保存在columns里。如下方式可以创建一个DataFrame:

    import pandas as pd
    import numpy as np
    
    # 行数*列数要与数据个数一致
    >>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2','col3'])
    Traceback (most recent call last):
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py", line 4857, in create_block_manager_from_blocks
        placement=slice(0, len(axes[0])))]
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py", line 3205, in make_block
        return klass(values, ndim=ndim, placement=placement)
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py", line 125, in __init__
        '{mgr}'.format(val=len(self.values), mgr=len(self.mgr_locs)))
    ValueError: Wrong number of items passed 4, placement implies 3
    
    During handling of the above exception, another exception occurred:
    
    Traceback (most recent call last):
      File "<stdin>", line 1, in <module>
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 379, in __init__
        copy=copy)
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/frame.py", line 536, in _init_ndarray
        return create_block_manager_from_blocks([values], [columns, index])
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py", line 4866, in create_block_manager_from_blocks
        construction_error(tot_items, blocks[0].shape[1:], axes, e)
      File "/root/miniconda3/lib/python3.6/site-packages/pandas/core/internals.py", line 4843, in construction_error
        passed, implied))
    ValueError: Shape of passed values is (4, 3), indices imply (3, 3)
    
    >>> df = pd.DataFrame(np.arange(12).reshape(3, 4), index = ['row1', 'row2', 'row3'], columns=['col1', 'col2', 'col3', 'col4'])
    >>> 
    >>> df
          col1  col2  col3  col4
    row1     0     1     2     3
    row2     4     5     6     7
    row3     8     9    10    11
    
    >>> df.index
    Index(['row1', 'row2', 'row3'], dtype='object')
    >>> 
    >>> df.columns
    Index(['col1', 'col2', 'col3', 'col4'], dtype='object')

    在这里插入图片描述

    iteritems(): 按列遍历,将DataFrame的每一列迭代为(列名, Series)对,可以通过row[index]对元素进行访问

    iterrows(): 按行遍历,将DataFrame的每一行迭代为(index, Series)对,可以通过row[name]对元素进行访问

    itertuples(): 按行遍历,将DataFrame的每一行迭代为元祖,可以通过row[name]对元素进行访问,比iterrows()效率要高

    >>> import pandas as pd
    >>> 
    >>> pdd = [{'c1':10, 'c2':100}, {'c1':11, 'c2':111}, {'c1':22, 'c2':222}]
    >>> 
    >>> print(type(pdd))
    <class 'list'>
    >>> 
    >>> df = pd.DataFrame(pdd)
    >>> 
    >>> print(df)
       c1   c2
    0  10  100
    1  11  111
    2  22  222
    >>> print(type(df))
    <class 'pandas.core.frame.DataFrame'>

    按列遍历iteritems()用法:

    # index--列名
    >>> for index, row in df.iteritems():
    ...     print(index)
    ... 
    c1
    c2
    
    # row--某一列, row[0]某一列的第一行
    >>> for index, row in df.iteritems():
    ...     print(row[0], row[1], row[2])
    ... 
    10 11 22
    100 111 222

    按行遍历iterrows()用法:

    # index-行号
    >>> for index, row in df.iterrows():
    ...     print(index)
    ... 
    0
    1
    2
    
    # 某一行通过列名name访问对应的元素
    >>> for index, row in df.iterrows():
    ...     print(row['c1'], row['c2'])
    ... 
    10 100
    11 111
    22 222

    按行遍历itertuples()用法:

    # getattr(row, 'name')得到某行的元素
    >>> for row in df.itertuples():
    ...     print(getattr(row, 'c1'), getattr(row, 'c2'))
    ... 
    10 100
    11 111
    22 222

    引用

    【1】https://pandas.pydata.org/

    展开全文
  • python pandas判断dataframe是否为空

    千次阅读 2021-03-06 22:05:53
    使用a.empty返回bool值 def get_index_code(name): index_list=pro.index_basic() ... empty_dataframe=pd.DataFrame() if index_code.empty: return 'lalala' print(index_code) return list(index_

    使用a.empty返回bool值

    def get_index_code(name):
        index_list=pro.index_basic()
        index_code=index_list[index_list['name']==name]
        empty_dataframe=pd.DataFrame()
        if index_code.empty:
            return 'lalala'
        print(index_code)
        return list(index_code['ts_code'])[0]
    get_index_code('laala')
    
    展开全文
  • 文章目录逻辑详解全部案例代码 逻辑详解 首先我们看常见的日期...判断一个series是否可以转换datetime: def check_is_datetime(series, time_mark='-') -> bool: if series.dtype == 'object': # 1. 长度相同

    逻辑详解

    1. 首先我们看常见的日期格式:2021-01-012021/01/01等等,因此通过以下两个规则判断:
    2. 规则一:每一个单元格的长度都相同
    3. 规则二:每一个单元格的内容,按照某个字符切分后都是等长的

    判断一个series是否可以转换为datetime

    def check_is_datetime(series, time_mark='-') -> bool:
        if series.dtype == 'object':
            # 1. 长度相同
            series_len = series.str.len()
            for i in range(len(series_len)):
                if series_len[0] != series_len[i]:
                    return False
            # 2. 被切分后都有三份
            for sp in series.str.split(time_mark):
                if len(sp) != 3:
                    return False
            return True
        elif series.dtypes == 'datetime64[ns]':
            return True
        else:
            return False
    

    全部案例代码

    import pandas as pd
    
    
    # 判断一个series是否为datetime格式
    def check_is_datetime(series, time_mark='-') -> bool:
        if series.dtype == 'object':
            # 1. 长度相同
            series_len = series.str.len()
            for i in range(len(series_len)):
                if series_len[0] != series_len[i]:
                    return False
            # 2. 被切分后都有三份
            for sp in series.str.split(time_mark):
                if len(sp) != 3:
                    return False
            return True
        elif series.dtypes == 'datetime64[ns]':
            return True
        else:
            return False
    
    
    def check_date(dataframe: pd.DataFrame):
        check_list = []
        for index, series in dataframe.iteritems():
            check_list.append(check_is_datetime(series, time_mark='-'))
        return check_list
    
    
    if __name__ == '__main__':
        df = pd.DataFrame([
            ['2021-01-01', 'hahhah', '9340do', 43, 123.23, '2021-01-01'],
            ['2022-02-02', 'balbal', 'jsi0-2-3', 12, 34.0, '2022-02-02'],
            ['2023-03-03', 'kkk', '123vd-2f', 23, 12.0, '2023-03-03'],
        ], columns=['time1', 'str1', 'str2', 'int1', 'float1', 'time2'])
        check_datetime_list = check_date(df)
        print(check_datetime_list)  # 返回是时间格式的列
        print(df.iloc[:, check_datetime_list])  # 打印时间所在列
    

    打印内容:

    [True, False, False, False, False, True]
            time1       time2
    0  2021-01-01  2021-01-01
    1  2022-02-02  2022-02-02
    2  2023-03-03  2023-03-03
    
    展开全文
  • pandasdataframe字符串处理

    万次阅读 2018-11-21 11:45:27
    参考:dataframe.replace官方文档 1 问题 在处理数据的时候遇到一个问题是,明明某些列有很多是的,但是在python里用...但是用isnull判断False的 2 pandas的空值  在pandas里空值是指NA,包括numpy的n...
  • pandas.DataFrame.dropnaDataFrame.dropna(self, axis=0, how='any', thresh=None, subset=None, inplace=False)参考pandas.DataFrame.dropnaaxis : {0 or ‘index’, 1 or ‘columns’}, default 00, or ‘index’ ...
  • 1.找出含有空值的行方法:DataFrame[DataFrame.isnull().T.any()]其中,isnull()能够判断数据中元素是否空值;T转置;any()判断该行是否有空值。import pandas as pdimport numpy as npn = np.a...
  • import pandas as pd df1 = pd.DataFrame([[1, 1000, 23241], [1111, 2, 4], [5, 23, 25]], columns=['a', 'b', 'c']) list1 = [1, 5] df2 = df1[df1['a'].isin(list1)] df3 = df1[~df1['a'].isin(list1)...
  • 1.找出含有空值的行方法:DataFrame[DataFrame.isnull().T.any()]其中,isnull()能够判断数据中元素是否空值;T转置;any()判断该行是否有空值。import pandas as pdimport numpy as npn = np.arange(20, dtype=...
  • pandas.DataFrame

    2018-07-10 20:23:38
    class pandas.DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) 数据除了可以直接传递对象外还有以下几个来源: DataFrame.from_records constructor from tuples, also record arrays...
  • pandas.DataFrame 详解

    2019-07-11 11:16:35
    pandas.DataFrame
  • pandasDataFrame

    2020-10-30 17:42:22
    pandasDataFrame 1、DataFrame创建(二维,Series容器) d1 = pd.DataFrame(np.arange(12).reshape(3, 4)) 通过index和columns指定行索引和列索引 d2 = pd.DataFrame(np.arange(12).reshape(3, 4), index=list(...
  • PandasDataFrame赋值

    万次阅读 多人点赞 2018-06-25 16:12:29
    我们可以根据自己的需求, 用 pandas 进行更改数据里面的值, 或者加上一些的,或者有数值的列. 首先建立了一个 6X4 的矩阵数据。 dates = pd.date_range('20130101', periods=6) df = pd.DataFrame(np.arange(24...
  • pandasDataFrame学习

    2018-12-05 11:58:16
    pandas 入门学习 Series 使用方法: Series定义 Series 对象基本创建,值,索引如何访问 Series 对象通过字典创建 判断Series对象是否存在缺失值 import pandas as pd ...PandasDataFrame 学习 DataFram...
  • pandas.DataFrame 索引

    2020-05-04 15:53:15
    pandas.DataFrame 索引df.loc / df:选择行与列df:选择列df.loc:选择行df.iloc:按整数位置选择行布尔型索引多重索引 df.loc / df:选择行与列 df:选择列 默认一般用于选择列,但也可以选择行 import numpy ...
  • pandas.DataFrame数据操作

    2019-08-02 16:45:09
    利用pandasDataFrame数据进行操作,主要包括数据索引、统计、处理
  • PandasDataframe

    2019-02-17 22:06:08
    import pandas as pd import numpy as np #DataFrame 表示的是矩阵的数据表,包含已排序的列集合,每一列可以是不同的值类型(数值、字符串、布尔值等) data = {'state': ['Ohio', 'Ohio', 'Ohio', 'Nevada', '...
  • 今天小编就大家分享一篇对pandasdataframe中某列按照条件赋值的实例讲解,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
  • Dataframe: dataframe:二维的表格型数据结构,是组合的series。dataframe 的每一行和每一列都是一个series。 语法结构: DataFrame(data=None, index=None, columns=None, dtype=None, copy=False) data:数组...
  • pandas.DataFrame.isna 的使用及注意事项

    千次阅读 2020-03-26 13:35:49
    首先,需要指出一点,pandas.DataFrame.isna 与pandas.DataFrame.isnull 是等价的。下面的图是isna官网的截图: 常见被判定NaN的对象: 1.None 2.numpy.NaN 常见于读入csv时的空值。 此外,字符串、空格...
  • pandasDataFrame类型中,找出所有有空值的行,可以使用.isnull()方法和.any()方法。 1.找出含有空值的行 方法:DataFrame[DataFrame.isnull().T.any()] 其中,isnull()能够判断数据中元素是否空值;T转置;any...
  • 1.Pandas包中DataFrame 的应用 下面都是工作种经常用到的方法,随手记录下来 1.1 数据库数据存储 from sqlalchemy import create_engine engine= create_engine(&quot;mysql+pymysql://data_user:youruser...
  • pandas.DataFrame.apply方法详解

    千次阅读 2019-12-20 18:53:25
    官方解释:https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.DataFrame.apply.html DataFrame.apply(self, func, axis=0, broadcast=None, raw=False, reduce=None, result_type=None, ar...
  • Pandas判断Empty DataFrame

    2021-04-28 10:04:22
    DataFrame.empty 如果是的话,会翻译true
  • pandas-DataFrame运算

    千次阅读 2019-08-15 17:24:35
    DataFrame运算 1 算术运算 add(other) 比如进行数学运算加上具体的一个数字 data['open'].add(1) 2018-02-27 24.53 2018-02-26 23.80 2018-02-23 23.88 2018-02-22 23.25 2018-02-14 22.49 sub(other) 2 ...
  • pandasDataFrame是类似于一张表的结构,但是并没有像数据库表那样的SQL操作。虽然如此,它依然可以使用python语言的风格实现SQL中的所有操作。 文章较长,建议点击右侧目录定位到自己感兴趣的章节进行重点阅读。 ...
  • python3 pandasDataFrame逻辑判断错误:The truth value of a Series is ambiguous. 解决方案 出现这个问题估计你是在使用Pandas中出现的,如果是那恭喜你找到了解决办法,哈哈~ #通用型示例 FI_lasso[(FI_lasso...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 15,692
精华内容 6,276
关键字:

pandas判断dataframe为空