全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 python论坛
3444 2
2020-04-03
#在对pandas中的dataframe进行apply操作时,经常会遇到某列中存在nan值的情况,需要先进行判断找出这样的值再进行分情况处理。
# None是一个对象,而NULL是一个类型。
# Python中没有NULL,只有None,None有自己的特殊类型NoneType。
# None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType 类型的变量,#但是可以将 None 赋值给任何变量。如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None。




#*****************************************************************
# 需求:python的DataFrame 中根据两列 列1 和列2 来生成列3 ,具体为如果列1为空则列3值为A  否则 列1>列2 生成B   再否则列2<=列1 列3生成C。

import  pandas as pd
import  numpy as np

def function(df):
    # if df['col1'].isnull():    #不行
    # if df['col1']==None:       #不行
    # if df['col1'] in None:     #不行
    # if df['col1'] == "":       #不行
    if pd.isnull(df['col1']):

        return 'A'
    elif df['col1'] > df['col2']:
        return 'B'
    elif df['col1'] <= df['col2']:
        return 'C'


col1=[60,None,20,24,50,40,65,50,36,50]
col2=[51,40,41,25,51,41,36,51,37,51]
df=pd.DataFrame({"col1":col1,"col2":col2})
# df=df.fillna()
df['col3'] = df.apply(function, axis=1)
print(df)
print("*"*50)
exit()

#****************************************************************************************************
col1  col2 col3
0  60.0    51    B
1   NaN   40    A
2  20.0    41    C
3  24.0    25    C
4  50.0    51    C
5  40.0    41    C
6  65.0    36    B
7  50.0    51    C
8  36.0    37    C
9  50.0    51    C
**************************************************

Process finished with exit code 0



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2020-4-3 22:43:46
最为关键的是:

if df['col1'].isnull():    #不行
if df['col1']==None:     #不行
if df['col1'] in None:     #不行
if df['col1'] == "":       #不行
if df['col1'] ='Nan'       #不行
   
if pd.isnull(df['col1']):  #可行
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2020-4-9 09:36:24
您好,最后四行的代码怎么解读呀
df['col3'] = df.apply(function, axis=1)
print(df)
print("*"*50)
exit()
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群