楼主: yunnandlg
2970 2

[问答] 根据条件给DataFrame新赋值一列 [推广有奖]

版主

但问耕耘,莫问收获

院士

0%

还不是VIP/贵宾

-

威望
0
论坛币
251627 个
通用积分
578.6351
学术水平
1667 点
热心指数
1686 点
信用等级
1650 点
经验
173251 点
帖子
1939
精华
0
在线时间
2581 小时
注册时间
2010-8-28
最后登录
2024-4-26

楼主
yunnandlg 在职认证  学生认证  发表于 2020-4-3 22:04:39 |只看作者 |坛友微信交流群|倒序 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
#在对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



二维码

扫码加我 拉你入群

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

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

关键词:Dataframe Frame Data Fram FRA

已有 1 人评分学术水平 热心指数 信用等级 收起 理由
Sunknownay + 3 + 3 + 3 鼓励积极发帖讨论

总评分: 学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

Cause morning rolls around and it's another day of sun.
清晨不久就会来到,又是阳光明媚的一天。
沙发
yunnandlg 在职认证  学生认证  发表于 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']):  #可行

使用道具

藤椅
Della99521 发表于 2020-4-9 09:36:24 |只看作者 |坛友微信交流群
您好,最后四行的代码怎么解读呀
df['col3'] = df.apply(function, axis=1)
print(df)
print("*"*50)
exit()

使用道具

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

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

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

GMT+8, 2024-4-26 12:22