楼主: ENJY
5385 4

[问答] python的DataFrame 中根据两列条件判断生成第三列 [推广有奖]

  • 1关注
  • 0粉丝

大专生

21%

还不是VIP/贵宾

-

威望
0
论坛币
643 个
通用积分
0.0089
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
495 点
帖子
15
精华
0
在线时间
53 小时
注册时间
2015-4-13
最后登录
2020-9-30

2论坛币
python的DataFrame 中根据两列 列1 和列2 来生成列3 ,具体为如果列1为空则列3值为A  否则 列1>列2 生成B   再否则列2<=列1 列3生成C

最佳答案

yunnandlg 查看完整内容

#在对pandas中的dataframe进行apply操作时,经常会遇到某列中存在nan值的情况,需要先进行判断找出这样的值再进行分情况处理。 # None是一个对象,而NULL是一个类型。 # Python中没有NULL,只有None,None有自己的特殊类型NoneType。 # None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType 类型的变量,#但是可以将 None 赋值给任何变量。如果希望 ...
关键词:Dataframe python Frame Data Fram python apply
沙发
yunnandlg 在职认证  学生认证  发表于 2020-4-3 17:03:06 |只看作者 |坛友微信交流群
#在对pandas中的dataframe进行apply操作时,经常会遇到某列中存在nan值的情况,需要先进行判断找出这样的值再进行分情况处理。
# None是一个对象,而NULL是一个类型。
# Python中没有NULL,只有None,None有自己的特殊类型NoneType。
# None 是 NoneType 数据类型的唯一值(其他编程语言可能称这个值为 null、nil 或 undefined),也就是说,我们不能再创建其它 NoneType 类型的变量,#但是可以将 None 赋值给任何变量。如果希望变量中存储的东西不与任何其它值混淆,就可以使用 None。




#*****************************************************************
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

使用道具

藤椅
FlyUFalcon 在职认证  发表于 2020-4-3 17:48:56 |只看作者 |坛友微信交流群
def function(df):
    if df['col1'] ='Nan':
        return 'A'
    elif df['col1'] > df['col2']:
        return 'B'
    else:
        return 'C'
df['col3'] = df.apply(function, axis=1)
已有 1 人评分经验 收起 理由
yunnandlg + 100 精彩帖子

总评分: 经验 + 100   查看全部评分

使用道具

板凳
yunnandlg 在职认证  学生认证  发表于 2020-4-3 22:07:07 |只看作者 |坛友微信交流群
FlyUFalcon 发表于 2020-4-3 17:48
def function(df):
    if df['col1'] ='Nan':
        return 'A'
稍作修改

使用道具

报纸
yunnandlg 在职认证  学生认证  发表于 2020-4-3 22:43:30 |只看作者 |坛友微信交流群

最为关键的是:

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']):  #可行

使用道具

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-25 17:45