繁体   English   中英

使用 map 和 lambda 函数

[英]Using map and lambda function

我有以下 Python 数据框:

state_data = {'State':['Alabama','Alaska','Arizona','Arkansas'],'PostCode':['AL','AK','AZ','AR'],'Area':['52,423','656,424','*','53,182'],'Pop':['4,040,587','550,043','3,665,228','2,350,750']}
state_data

import pandas as pd

df = pd.DataFrame(state_data)

dfdiff = df.set_index('State')
dfdiff

myfunc = lambda x: x.replace(',','')

dfdiff = map(myfunc,(dfdiff['Area'],dfdiff['Pop'])
dfdiff

我成功地使用 lambda 制作了一个“无名”函数,但是在尝试使用 map 函数应用它时遇到了问题。

错误如下:

TypeError: 'map' object is not subscriptable

如何通过 map 函数将这些更改应用于我的dfdiff数据框(或者有更好的方法)?

使用str.replaceapplymap提供地图对象而不是熊猫 DataFrame

state_data = {'State':['Alabama','Alaska','Arizona','Arkansas'],'PostCode':['AL','AK','AZ','AR'],'Area':['52,423','656,424','*','53,182'],'Pop':['4,040,587','550,043','3,665,228','2,350,750']}
state_data

import pandas as pd

df = pd.DataFrame(state_data)

dfdiff = df.set_index('State')
dfdiff['Area'] = dfdiff['Area'].str.replace(',', '')

dfdiff
    PostCode    Area    Pop
State           
Alabama AL  52423   4,040,587
Alaska  AK  656424  550,043
Arizona AZ  *   3,665,228
Arkansas    AR  53182   2,350,750

对于多列

df[['Area', 'Pop']] = df[['Area', 'Pop']].apply(lambda x: x.str.replace(',', ''))
    State   PostCode    Area    Pop
0   Alabama AL  52423   4040587
1   Alaska  AK  656424  550043
2   Arizona AZ  *   3665228
3   Arkansas    AR  53182   2350750

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM