有没有一种方法可以替换不满足条件的值,从而避免nan?

我正在尝试替换嘈杂的值(','),以将数据框列转换为数字列。当str.replace用nan覆盖不包含任何逗号的所有值时,会发生问题。

说明问题:

import pandas as pd

data = {
    'transaction_number': [1344,'1,345',1346,347'],'date': ['2018-12-01 14:03:38','2018-12-01 12:38:12','2018-12-04 13:19:46',' 2018-12-04 12:23:09']
}

df = pd.DataFrame(data)
print(df)

输出:

    transaction_number  date
0   1344    2018-12-01 14:03:38
1   1,345   2018-12-01 12:38:12
2   1346    2018-12-04 13:19:46
3   1,347   2018-12-04 12:23:09

我尝试过的第一件事:

df.transaction_number = df.transaction_number.replace(',','')

#i tried this equivalet too:
df.transaction_number.replace(','',inplace = True)

他们都不对数据进行任何转换(也就是说,他们什么也不做)。如果有人能告诉我为什么我会如此感激。

最后我尝试了(str方法):

df.transaction_number = df.transaction_number.str.replace(','')

并返回:

    transaction_number  date
0   NaN    2018-12-01 14:03:38
1   1345   2018-12-01 12:38:12
2   NaN    2018-12-04 13:19:46
3   1347   2018-12-04 12:23:09

我不知道这是什么原因,为什么发生,我想要的结果是:

    transaction_number  date
0   1344    2018-12-01 14:03:38
1   1345    2018-12-01 12:38:12
2   1346    2018-12-04 13:19:46
3   1347    2018-12-04 12:23:09

请帮助并感谢您的阅读!

aabb5888157 回答:有没有一种方法可以替换不满足条件的值,从而避免nan?

之所以会这样,是因为您的列具有混合数据类型。我们可以将它们全部转换为字符串(使用.astype(str)),然后应用替换。

import pandas as pd

data = {
    'transaction_number': [1344,'1,345',1346,347'],'date': ['2018-12-01 14:03:38','2018-12-01 12:38:12','2018-12-04 13:19:46',' 2018-12-04 12:23:09']
}

df = pd.DataFrame(data)
df.transaction_number = df.transaction_number.astype(str).str.replace(",","")
print(df)

输出

  transaction_number                  date
0               1344   2018-12-01 14:03:38
1               1345   2018-12-01 12:38:12
2               1346   2018-12-04 13:19:46
3               1347   2018-12-04 12:23:09
,

您需要regex=True上的选项replace

df['transaction_number'] = df.transaction_number.replace(',','',regex=True)

Out[12]:
                   date transaction_number
0   2018-12-01 14:03:38               1344
1   2018-12-01 12:38:12               1345
2   2018-12-04 13:19:46               1346
3   2018-12-04 12:23:09               1347
本文链接:https://www.f2er.com/3169971.html

大家都在问