首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

Excel与pandas:使用applymap()创建复杂的计算列

标签:Python与Excel,pandas 我们之前讨论了如何在pandas中创建计算列,并讲解了一些简单的示例。...通过将表达式赋值给一个新列(例如df['new column']=expression),可以在大多数情况下轻松创建计算列。然而,有时我们需要创建相当复杂的计算列,这就是本文要讲解的内容。...图1 创建一个辅助函数 现在,让我们创建一个取平均值的函数,并将其处理/转换为字母等级。 图2 现在我们要把这个函数应用到每个学生身上。那么,在列中对每个学生进行循环?不!...pandas applymap()方法 pandas提供了一种将自定义函数应用于列或整个数据框架的简单方法,就是.applymap()方法,这有点类似于map()函数的作用。...图3 我们仍然可以使用map()函数来转换分数等级,但是,需要在三列中的每一列上分别使用map(),而applymap()能够覆盖整个数据框架(多列)。

3.9K10
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何使用Excel将某几列有值的标题显示到新列中

    如果我们有好几列有内容,而我们希望在新列中将有内容的列的标题显示出来,那么我们怎么做呢? Excel - TEXTJOIN function 1....- - - - 4 - - - 在开始,我们曾经使用INDEX + MATCH的方式,但是没有成功,一直是N/A https://superuser.com/questions/1300246/if-cell-contains-value-then-column-header...所以我们后来改为TEXTJOIN函数,他可以显示值,也可以显示值的标题,还可以多个列有值的时候同时显示。...- - 4 - - - 15 Year 5 - - - - 5 - - - =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),$B$1:$I$1,"")) 如果是想要显示值,...则: =TEXTJOIN(", ",TRUE,IF(ISNUMBER(B2:I2),B2:I2,"")) 其中,ISNUMBER(B2:I2)是判断值是不是数字,可以根据情况改成是不是空白ISBLANK

    11.3K40

    盘点使用Pandas解决问题:对比两列数据取最大值的5个方法

    一、前言 前几天在Python星耀交流群有个叫【iLost】的粉丝问了一个关于使用pandas解决两列数据对比的问题,这里拿出来给大家分享下,一起学习。...大概意思是说在DF中有2列数据,想每行取两列数据中的最大值,形成一个新列,该怎么写?最开始【iLost】自己使用了循环的方法写出了代码,当然是可行的,但是写的就比较难受了。...二、解决过程 这里给出5个方法,感谢大佬们的解答,一起来看看吧! 方法一:【月神】解答 其实这个题目的逻辑和思路也相对简单,但是对于Pandas不熟悉的小伙伴,接受起来就有点难了。...使用numpy结合pandas,代码如下: df['max4'] = np.where(df['cell1'] > df['cell2'],df['cell1'], df['cell2']) df...这篇文章基于粉丝提问,针对df中,想在每行取两列数据中的最大值,作为新的一列问题,给出了具体说明和演示,一共5个方法,顺利地帮助粉丝解决了问题,也帮助大家玩转Pandas,学习Python相关知识。

    4.3K30

    (数据科学学习手札72)用pdpipe搭建pandas数据分析流水线

    图7 DropNa:   这个类用于丢弃数据中空值元素,其主要参数与pandas中的dropna()保持一致,核心参数如下: axis:0或1,0表示删除含有缺失值的行,1表示删除含有缺失值的列...图15   可以看到这时原有列得以保留,新的列以旧列名+后缀名的方式被添加到旧列之后,下面我们修改result_columns参数以自定义结果列名: # 设置drop参数为False,并将suffix参数设置为...,计算得到的聚合值填充到新列的每一个位置上: ?...:str或list,与columns参数一一对应的结果列名称,当你想要自定义结果新列名称时这个参数就变得非常有用,默认为None,即直接替换原始列 drop:bool型,用于决定是否删除替换前的原始列,...  这是我们在2.1中举例说明使用到的创建pipeline的方法,直接传入由按顺序的pipeline组件组成的列表便可生成所需pipeline,而除了直接将其视为函数直接传入原始数据和一些辅助参数(如

    1.4K10

    案例 | 用pdpipe搭建pandas数据分析流水线

    列 5、丢掉genres_num小于等于5的行 上述操作直接使用pandas并不会花多少时间,但是想要不创造任何中间临时结果一步到位产生所需的数据框子集,并且保持代码的可读性不是一件太容易的事,但是利用...,默认为True,即对应列的计算结果直接替换掉对应的旧列 suffix:str型,控制新列后缀名,当drop参数设置为False时,结果列的列名变为其对应列+suffix参数指定的后缀名;当drop设置为...时,原始变量有几个类别就对应几个哑变量被创造;当设置为指定类别值时(譬如设置drop_first = '男性'),这个值对应的类别将不进行哑变量生成 drop:bool型,控制是否在生成哑变量之后删除原始的类别型变量...,默认为None,即直接替换原始列 drop:bool型,用于决定是否删除替换前的原始列,默认为True,即删除原始列 下面是举例演示: 替换original_language中的'en'或'cn'为'...上文中我们主要演示了单一pipeline部件工作时的细节,接下来我们来了解pdpipe中组装pipeline的几种方式: 2.3.1 PdPipeline 这是我们在2.1中举例说明使用到的创建pipeline

    82410

    图解四个实用的Pandas函数!

    现在,当我们执行df.shift(1,fill_value=0)即可将数据往下移动一行,并用0填充空值 ? 现在,如果我们需要将前一天的股价作为新的列,则可以使用下面的代码 ?...我们可以如下轻松地计算最近三天的平均股价,并创建一个新的列 ? 向前移动数据也是很轻松的,使用-1即可 ? 更多有关shift函数可以查阅官方文档,总之在涉及到数据移动时,你需要想到shift!...同时可以对bin参数将结果划分为区间 ? 更多的细节与参数设置,可以阅读pandas官方文档。...mask() pandas中的mask方法比较冷门,和np.where比较类似,将对cond条件进行判断,如果cond为False,请保留原始值。如果为True,则用other中的相应值替换。 ?...但如果有相等的情况出现,那么可以使用first,last,all来进行保留 ?

    88631

    python数据分析——数据预处理

    thresh:可选参数,默认为None,表示保留至少含有非缺失值的行或列的个数,小于该值的行或列将被删除。...例如,df.drop_duplicates()返回一个没有重复行的新DataFrame。 替换重复值:使用.replace()方法可以将DataFrame中的重复值替换为其他值。...可以是单个列名的字符串,也可以是列名列表。 drop:指示是否在新索引中保留原有的列。默认为True,表示将原有的列从DataFrame中删除。 append:指示是否将新的索引添加到原有的索引之后。...然后,使用set_index()函数将列’A’作为新的索引。最后,使用set_index()函数将列’A’和列’B’一起作为新的索引,并将新的索引添加到原有的索引之后。...需要注意的是,insert()方法会改变原始列表,而不是创建一个新的列表。如果希望在不改变原始列表的情况下插入元素,可以使用切片和拼接操作来实现。

    8510

    删除重复值,不只Excel,Python pandas更行

    此方法包含以下参数: subset:引用列标题,如果只考虑特定列以查找重复值,则使用此方法,默认为所有列。 keep:保留哪些重复值。’...first’(默认):保留第一个重复值;’last’:保留最后一个重复值。False:删除所有重复项。 inplace:是否覆盖原始数据框架。...图4 这一次,我们输入了一个列名“用户姓名”,并告诉pandas保留最后一个的重复值。现在pandas将在“用户姓名”列中检查重复项,并相应地删除它们。...记录#1和3被删除,因为它们是该列中的第一个重复值。 现在让我们检查原始数据框架。它没有改变!这是因为我们将参数inplace留空,默认情况下其值为False。...如果我们指定inplace=True,那么原始的df将替换为新的数据框架,并删除重复项。 图5 在列表或数据表列中查找唯一值 有时,我们希望在数据框架列的列表中查找唯一值。

    6.1K30

    【Python】数据评估

    如果原始数据的第一行(列名)和第一列(索引)存在问题,那么就可以使用rename(index={})方法和rename(columns={})方法,字典里面的键是原始值,字典里面的值是修改后的值。...而reset_index()方法可以把当前索引作为一列的列名,然后使用位置索引,并返回一个新的图表。...宽数据转化成长数据,可以使用pd.melt(DataFrame,id_vars=["需要保留的列名1","需要保留的列名2",var_name="新列列名",value_name="变量值"])。...如果缺失值较多,那么可以使用fillna()方法,会把缺失值替换成传入的参数;当往fillna()中传入的是字典时,可以同时替换不同列的缺失值。 3....统一数据,可以使用replace("原始值",”新值“)来统一数据。 4. 对于Series对象,可以通过astype()方法来改变类型。 5.

    7700

    pandas数据清洗,排序,索引设置,数据选取

    df.fillna({1:0,2:0.5}) #对第一列nan值赋0,第二列赋值0.5 df.fillna(method='ffill') #在列方向上以前一个值作为值赋给NaN 值替换replace(...) # 将df的A列中 -999 全部替换成空值 df['A'].replace(-999, np.nan) #-999和1000 均替换成空值 obj.replace([-999,1000], np.nan...返回唯一值的数组(类型为array) df.drop_duplicates(['k1'])# 保留k1列中的唯一值的行,默认保留第一行 df.drop_duplicates(['k1','k2'],...按行(axis=0) #average 值相等时,取排名的平均值 #min 值相等时,取排名最小值 #max 值相等时,取排名最大值 #first值相等时,按原始数据出现顺序排名 ---- 索引设置 reindex...df.loc[1:4,['petal_length','petal_width']] # 需求1:创建一个新的变量 test # 如果sepal_length > 3 test = 1 否则 test

    3.3K20

    Python代码实操:详解数据清洗

    使用Pandas的 fillna 填充缺失值,支持更多自定义的值和常用预定义方法。 通过 copy() 获得一个对象副本,常用于原始对象和复制对象同时进行操作的场景。...Imputer 方法创建一个预处理对象,其中 missing_values 为默认缺失值的字符串,默认为 NaN;示例中选择缺失值替换方法是均值(默认),还可以选择使用中位数和众数进行替换,即 strategy...前者通过固定(或手动指定)的值替换缺失值,后者使用Pandas提供的默认方法替换缺失值。以下是 method 支持的方法。...另外,如果是直接替换为特定值的应用,也可以考虑使用Pandas的 replace 功能。...的选择功能,即只保留在 df_zscore 中异常列(col1)为 False 的列。

    5K20

    python数据分析——数据预处理

    在Python中,我们可以使用scikit-learn等机器学习库来进行特征选择和降维,同时也可以利用自己的业务知识来构造新的特征。 在进行数据预处理时,我们还需要注意数据的质量和完整性。...关于set_index 参数 keys : 要设置为索引的列名(如有多个应放在一个列表里) drop : 将设置为索引的列删除,默认为True append : 是否将新的索引追加到原索引后(即是否保留原索引...7.2数据修改与替换 按列增加数据 【例】请创建如下所示的DataFrame数据,并利用Python对该数据的最后增加一列数据,要求数据的列索引为'four' ,数值为[9,10,24]。...若要在该数据的'two' 列和 ‘three'列之间增加新的列,该如何操作?...inplace:可选参数,对原数组作出修改并返回一个新数组。默认是False,如果为true,那么原数组直接被替换。

    94610

    pandas进行数据分析

    业务人员之前使用的大部分都是Excel,现在随着数据量的提升,Excel已无法满足数据处理需求。如果在Excel里面数据量超过10万行,则Excel运行起来就相当卡顿。...下面展示一些在Excel里面常用的功能,看看其在Python里面具体是怎么实现的,Python处理数据用到的主要是pandas库,这也是《利用python进行数据分析》整本书介绍的对象。...(columns='new_column_1') #返回删除后的新数据,原始数据不变 data.drop(columns=['new_column_1','new_column_2']) #返回删除后的新数据...data[['性别','消费频次']] data[['性别','消费频次']].drop_duplicates(keep='first') #保留第1个,一般结合排序使用 data[['性别','...消费频次']].drop_duplicates(keep='last') #保留最后1个,一般结合排序使用 #根据 性别、消费频次 2列进行去重 data.drop_duplicates(subset=

    1.4K20

    Pandas 25 式

    rename()方法改列名是最灵活的方式,它的参数是字典,字典的 Key 是原列名,值是新列名,还可以指定轴向(axis)。 ? 这种方式的优点是可以重命名任意数量的列,一列、多列、所有列都可以。...还可以使用 exclude 关键字排除指定的数据类型。 ? 7. 把字符串转换为数值 再创建一个新的 DataFrame 示例。 ?...把字符串分割为多列 创建一个 DataFrame 示例。 ? 把姓名列分为姓与名两列,用 str.split() 方法,按空格分割,并用 expand 关键字,生成一个新的 DataFrame。 ?...通过赋值语句,把这两列添加到原 DataFrame。 ? 如果想分割字符串,但只想保留分割结果的一列,该怎么操作? ? 要是只想保留城市列,可以选择只把城市加到 DataFrame 里。 ?...创建透视表 经常输出类似上例的 DataFrame,pivot_table() 方法更方便。 ? 使用透视表,可以直接指定索引、数据列、值与聚合函数。

    8.4K00

    python数据科学系列:pandas入门详细教程

    所以从这个角度讲,pandas数据创建的一种灵活方式就是通过字典或者嵌套字典,同时也自然衍生出了适用于series和dataframe的类似字典访问的接口,即通过loc索引访问。...或字典(用于重命名行标签和列标签) reindex,接收一个新的序列与已有标签列匹配,当原标签列中不存在相应信息时,填充NAN或者可选的填充值 set_index/reset_index,互为逆操作,...检测各行是否重复,返回一个行索引的bool结果,可通过keep参数设置保留第一行/最后一行/无保留,例如keep=first意味着在存在重复的多行时,首行被认为是合法的而可以保留 删除重复值,drop_duplicates...,可通过axis参数设置是按行删除还是按列删除 替换,replace,非常强大的功能,对series或dataframe中每个元素执行按条件替换操作,还可开启正则表达式功能 2 数值计算 由于pandas...3 数据转换 前文提到,在处理特定值时可用replace对每个元素执行相同的操作,然而replace一般仅能用于简单的替换操作,所以pandas还提供了更为强大的数据转换方法 map,适用于series

    15K20

    数据分析篇 | PyCon 大咖亲传 pandas 25 式,长文建议收藏

    rename()方法改列名是最灵活的方式,它的参数是字典,字典的 Key 是原列名,值是新列名,还可以指定轴向(axis)。 ? 这种方式的优点是可以重命名任意数量的列,一列、多列、所有列都可以。...还可以使用 exclude 关键字排除指定的数据类型。 ? 7. 把字符串转换为数值 再创建一个新的 DataFrame 示例。 ?...把字符串分割为多列 创建一个 DataFrame 示例。 ? 把姓名列分为姓与名两列,用 str.split() 方法,按空格分割,并用 expand 关键字,生成一个新的 DataFrame。 ?...通过赋值语句,把这两列添加到原 DataFrame。 ? 如果想分割字符串,但只想保留分割结果的一列,该怎么操作? ? 要是只想保留城市列,可以选择只把城市加到 DataFrame 里。 ?...创建透视表 经常输出类似上例的 DataFrame,pivot_table() 方法更方便。 ? 使用透视表,可以直接指定索引、数据列、值与聚合函数。

    7.2K20
    领券