Pandas将范围更改为int

2024-04-19 07:11:16 发布

您现在位置:Python中文网/ 问答频道 /正文

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


Tags: 字符串pandasdf参数ifnprange语句
1条回答
网友
1楼 · 发布于 2024-04-19 07:11:16

首先需要获取值不是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)

这只会更改列不为null的行。由于您没有包含代码,如果不了解更多上下文,我将帮不上什么忙。希望这有帮助

相关问题 更多 >