DataFrame 数据筛选

近期使用pandas比较频繁,在进行数据处理的时候经常要用到dataframe的数据筛选功能,这里做个小结。

数据有以下的格式:

columns = [“blockNumber”,”timestamp”,”transactionHash”,”from”,”to”,”creates”,……”isError”]

数据筛选基本格式

初级筛选:

==, !=, >, >=,

主要用于简单的判断

选取”from”列数据,最后一位为0或a的数据。(数据类型默认str)

data[data['from'].str[-1:].str.contains('0|a')]

contains语句中,可以以’|’符号为分割,添加多个候选项。

这里由于要只选最后一位,需要使用两次 str 方法。

已有一个取值数组,目标是选择数据中,”from”数据的值在取值数组内的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[data['from'].isin(targetList)]

这里 targetList最好保持 list的数据类型,使用 pandas.Series可能会有意外的错误

反过来,如果目标是选择数据中,”from”数据的值 不在取值数组内的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[data['from'].isin(targetList)]
</code></pre>
<p>仔细注意,这里是在前面加个反引号  ,通过反引号来表示取反

选取的是数据中,"from"列数据的取值在目标数组内,或者"to"列数据取值最后一位为0或a的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[(data['from'].isin(targetList)) | (data['to'].str[-1:].str.contains('0|a'))]

选取的是数据中,"from"列数据的取值在目标数组内,并且"to"列数据最后一位为0或a的数据

targetList = ['0x12','0x1a','0x98', ... , '0x82']
data[(data['from'].isin(targetList)) & (data['to'].str[-1:].str.contains('0|a'))]

如果是多个条件并列在一起,每个条件都需要用括号括起来。

数据筛选进阶

这里主要介绍一些,跟数据库操作相似的数据筛选,假设数据格式如下:

columns = ['from', 'to', 'weight']

这里,假设一个需求是,统计from中的值,出现的次数,我们很容易想到可以通过value_counts() 方法直接获取:

pd.DataFrame(data['from'].value_counts())

这里value_counts()得到的是一个 pandas.Series
那么更进一步,如果想知道"from"中的每个取值,对应的"to"取值跟"weight"取值分别是多少,可以使用:

pd.DataFrame(data.groupby('from'))

如果要统计的是 from 中的值,每个值对应的 weight 总和是多少,这时候需要使用到 groupbyagg

pd.DataFrame(data.groupby('from').agg('sum'))

假设现在的需求是,将from跟to的数据,每一行按照 from > to 的顺序交换(注意不是整列交换)。这时可以使用 np.where实现。

    data['from'], data['to']= np.where(
                    data['from'] > data['to'],
                    [data['to'], data['from']],
                    [data['from'], data['to']])

np.where使用格式是:

np.where(condition, Yes, No)

conditionTrue时,取值为 Yes,为 False时,取值是 No

Original: https://blog.csdn.net/m0_37990055/article/details/115517841
Author: OnlyCaptain
Title: DataFrame 数据筛选

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/674280/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球