java map 修改值_使用pandas .map更改值

你是对的,我认为你执行了两次相同的声明(1次后1) . 在Python交互式终端上执行的以下语句阐明了这一点 .

注意:如果你传递字典,map()会替换系列中的所有值,如果它与字典的键不匹配(我想,你也做了同样的事情,即两次执行语句) . 检查pandas map(),apply() . Pandas文档说明:当arg是字典时,系列中不在字典中的值(作为键)将转换为NaN .

>>> import pandas as pd

>>>

>>> d = {

... "label": ["ham", "ham", "spam", "ham", "ham"],

... "sms_messsage": [

... "Go until jurong point, crazy.. Available only ...",

... "Ok lar... Joking wif u oni...",

... "Free entry in 2 a wkly comp to win FA Cup fina...",

... "U dun say so early hor... U c already then say...",

... "Nah I don't think he goes to usf, he lives aro..."

... ]

... }

>>>

>>> df = pd.DataFrame(d)

>>> df

label sms_messsage

0 ham Go until jurong point, crazy.. Available only ...

1 ham Ok lar... Joking wif u oni...

2 spam Free entry in 2 a wkly comp to win FA Cup fina...

3 ham U dun say so early hor... U c already then say...

4 ham Nah I don't think he goes to usf, he lives aro...

>>>

>>> df['label'] = df.label.map({'ham':0, 'spam':1})

>>> df

label sms_messsage

0 0 Go until jurong point, crazy.. Available only ...

1 0 Ok lar... Joking wif u oni...

2 1 Free entry in 2 a wkly comp to win FA Cup fina...

3 0 U dun say so early hor... U c already then say...

4 0 Nah I don't think he goes to usf, he lives aro...

>>>

>>> df['label'] = df.label.map({'ham':0, 'spam':1})

>>> df

label sms_messsage

0 NaN Go until jurong point, crazy.. Available only ...

1 NaN Ok lar... Joking wif u oni...

2 NaN Free entry in 2 a wkly comp to win FA Cup fina...

3 NaN U dun say so early hor... U c already then say...

4 NaN Nah I don't think he goes to usf, he lives aro...

>>>

获得相同结果的其他方法

>>> import pandas as pd

>>>

>>> d = {

... "label": ['spam', 'ham', 'ham', 'ham', 'spam'],

... "sms_message": ["M1", "M2", "M3", "M4", "M5"]

... }

>>>

>>> df = pd.DataFrame(d)

>>> df

label sms_message

0 spam M1

1 ham M2

2 ham M3

3 ham M4

4 spam M5

>>>

第一种方式 - 使用map()和字典参数

>>> new_values = {'spam': 1, 'ham': 0}

>>>

>>> df

label sms_message

0 spam M1

1 ham M2

2 ham M3

3 ham M4

4 spam M5

>>>

>>> df.label = df.label.map(new_values)

>>> df

label sms_message

0 1 M1

1 0 M2

2 0 M3

3 0 M4

4 1 M5

>>>

第二种方式 - 使用map()和函数参数

>>> df.label = df.label.map(lambda v: 0 if v == 'ham' else 1)

>>> df

label sms_message

0 1 M1

1 0 M2

2 0 M3

3 0 M4

4 1 M5

>>>

第三种方式 - 使用带有函数参数的apply()

>>> df.label = df.label.apply(lambda v: 0 if v == "ham" else 1)

>>>

>>> df

label sms_message

0 1 M1

1 0 M2

2 0 M3

3 0 M4

4 1 M5

>>>

谢谢 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值