【问题标题】:Applying a function to list of columns of a dataframe?将函数应用于数据框的列列表?
【发布时间】:2021-03-20 09:21:43
【问题描述】:

我从这个 URL 抓取了这张表:

“https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/”

看起来像这样:

 State  Annual Mean Wage (All Occupations)  Median Monthly Rent Value of a Dollar
    0   Alabama $44,930 $998    $1.15
    1   Alaska  $59,290 $1,748  $0.95
    2   Arizona $50,930 $1,356  $1.04
    3   Arkansas    $42,690 $953    $1.15
    4   California  $61,290 $2,518  $0.87

然后我写了这个函数来帮助我把字符串变成整数:

def money_string_to_int(s):
return int(s.replace(",", "").replace("$",""))

money_string_to_int("$1,23")

当我将它应用于一列时,我的函数有效。我在这里找到了关于在多个列上使用的答案:How to apply a function to multiple columns in Pandas

但是我下面的代码不起作用并且没有产生错误:

ls = ['Annual Mean Wage (All Occupations)', 'Median Monthly Rent',
       'Value of a Dollar']

ppe_table[ls] = ppe_table[ls].apply(money_string_to_int)

【问题讨论】:

  • 您只需要在s中使用.str,然后再使用replace
  • 在它给我这个错误之前我已经这样做了:'str' object has no attribute 'str'

标签: pandas dataframe apply


【解决方案1】:

我们试试

df.set_index('State').apply(lambda x: (x.str.replace('[$,]','').astype(float))).reset_index()

【讨论】:

  • 好的,谢谢你。我有另一个地理数据框,其中包含更多工资数据,但在一列中也有一些坐标。我将如何选择这些列的子集?它只是 df['a','b'].rest_of_your_code 吗?
  • 您能否将坐标列添加到示例 df 中?
  • 是的,我可以将此生活成本数据框与“州”列上的坐标列合并。我最终只是使用您的函数创建了一个没有坐标内容的临时数据框,然后重新合并该地理数据框,然后将其与此生活成本数据框合并。有点乱,但无论如何。非常感谢!
猜你喜欢
  • 2017-04-22
  • 2020-04-24
  • 1970-01-01
  • 1970-01-01
  • 2020-03-23
  • 2019-06-01
  • 1970-01-01
相关资源
最近更新 更多