【问题标题】:Pandas change range into int熊猫将范围更改为 int
【发布时间】:2020-07-07 18:14:22
【问题描述】:

在我的df 中,我有一个salary_range 列,其中包含100 000 - 150 000 之类的范围。我想修改此列,以便将第一个值作为 int。所以在这个例子中,我想将"100 000 - 150 000(string) 更改为100000(int)。不幸的是salary_range 充满了NaN,我真的不知道如何在pandas 中使用if/where 语句。 我试着做这样的事情:df['salary_range'] = np.where(df['salary_range']!='NaN',) 但我不知道我应该写什么作为np.where 的第二个参数。显然我不能只使用str(salary_range),所以我不知道该怎么做。

【问题讨论】:

  • 你能展示你的代码吗?
  • 纯代码编写请求在 Stack Overflow 上是题外话——我们希望这里的问题与特定编程问题有关——但我们很乐意帮助您自己编写!告诉我们what you've tried,以及您遇到的问题。这也将有助于我们更好地回答您的问题。
  • 我编辑了我的问题@xszym

标签: python pandas string parsing data-science


【解决方案1】:

您首先需要取值不是 NaN 的子集。这可以使用以下代码完成。

pd.isna(df['salary_range'])

上述函数将返回一个包含真/假值的序列。现在您可以使用以下代码选择非 NaN 行。

df[pd.isna(df['salary_range'])]

接下来,您将需要解析该子集的条目,这可以通过多种方式完成,其中一种可以是以下。

df[pd.isna(df['salary_range'])]['salary_range'] = df[pd.isna(df['salary_range'])]['salary_range'].str.split(' ')[0].replace(' ', '').astype(int)

这只会更改列不为空的行。由于您没有包含代码,因此如果不了解更多关于上下文的信息,我将无能为力。希望这会有所帮助。

【讨论】:

    猜你喜欢
    • 2022-11-04
    • 2019-04-17
    • 2017-01-03
    • 2021-10-28
    • 2014-07-26
    • 2021-06-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多