[英]Is there any difference between using lambda as a function and using lambda with map?
[英]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.replace
或apply
, map
提供地图对象而不是熊猫 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.