gpt4 book ai didi

pandas - 如何将数据框列转换为字符串并替换 nan(fillna 不起作用)

转载 作者:行者123 更新时间:2023-12-02 20:36:13 25 4
gpt4 key购买 nike

我有一个 pandas 数据框,其中有一列整数,其中包含一些 nan。我想将它们从整数转换为字符串,并用“不可用”之类的描述替换 nan。

主要原因是因为我需要在该列上运行 groupbys,除非我转换 nan,否则 groupby 将摆脱它们!为什么会发生这种情况,以及整个 Pandas 社区为何没有奋起反抗,这是一个完全独立的讨论(当我第一次了解到它时,我简直不敢相信......)。

我已经尝试了下面的代码,但它不起作用。请注意,我已经尝试了 astype(str)astype('str')。在这两种情况下,列都会转换为对象,而不是字符串;也许是因为Python假设(错误地,它们在我的数据框中都具有相同的长度)字符串的长度不同?但是,最重要的是, fillna() 不起作用,并且 nan 仍然是 nan!为什么?

import numpy as np
import pandas as pd

df= pd.DataFrame(np.random.randint(1,10,(10000,5)), columns=['a','b','c','d','e'])
df.iloc[0,0]=np.nan
df['a']=df['a'].astype(str)
df['a']=df['a'].fillna('not available')
print(df.dtypes)
print(df.head())

最佳答案

fillna 将这些值转换为“str”后将不起作用,该列中不再有 np.nan,而是字符串值“nan”:

df= pd.DataFrame(np.random.randint(1,10,(10000,5)), columns=['a','b','c','d','e'])
df.iloc[0,0]=np.nan
#df['a']=df['a'].astype(str) <-- You don't need this line.
df['a']=df['a'].fillna('not available')
print(df.dtypes)
print(df.head())

输出:

a    object
b int32
c int32
d int32
e int32
dtype: object
a b c d e
0 not available 6 3 9 7
1 5 4 5 5 3
2 4 2 5 3 2
3 4 9 2 8 3
4 2 6 5 9 1

关于pandas - 如何将数据框列转换为字符串并替换 nan(fillna 不起作用),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47039712/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com