如何从串联的dataframe列中替换NaN?

时间:2019-09-06 12:14:37

标签: python pandas

我目前有一个熊猫数据框。第1列和第2列的连接导致第3列。

我已经尝试使用df.fillna(“)方法来处理NaN值。但是,我需要摆脱串联列中的NaN。而上述方法只能摆脱现有列。 >

import pandas as pd
import numpy as np
data = [[], ['arthur','shelby',''], ['michael','','']]
df = pd.DataFrame(data, columns = ['Name', 'LastName','FullName'])
df['FullName'] = df['Name'].map(str) + ' ' + (df['LastName'].map(str))
df1 = df.fillna("")
print(df1)

输出结果列的第一行包含NaN NaN。但是,我希望它是““”“ enter image description here

无论如何要实现这一目标?

2 个答案:

答案 0 :(得分:0)

您需要通过以下方式使用inplace

import pandas as pd
import numpy as np
data = [[], ['arthur','shelby',''], ['michael','','']]
df = pd.DataFrame(data, columns = ['Name', 'LastName','FullName'])
df['FullName'] = df['Name'].map(str) + ' ' + (df['LastName'].map(str))
df.fillna("",inplace=True)
print(df)

但是真正的问题是要在数据中插入空白行,因此您没有NaN's,但是您有None。您应该这样做(将数据中的第一个空列表删除):

import pandas as pd
import numpy as np
data = [['arthur','shelby',''], ['michael','','']]
df = pd.DataFrame(data, columns = ['Name', 'LastName','FullName'])
df['FullName'] = df['Name'].map(str) + ' ' + (df['LastName'].map(str))
df.fillna("",inplace=True)
print(df)

编辑我发现了您的问题,您需要先进行fillna操作,因为您要串联两个转换为字符串的nan:

import pandas as pd
import numpy as np
data = [[], ['arthur','shelby',''], ['michael','','']]
df = pd.DataFrame(data, columns = ['Name', 'LastName','FullName'])
df.fillna("",inplace=True)
df['FullName'] = df['Name'].map(str) + ' ' + (df['LastName'].map(str))
print(df)

答案 1 :(得分:0)

这是两种方法。

1)选中此documentation

df.fillna('',inplace=True)

2)另外,您可以使用替换方法。

df = df.replace(numpy.nan, '', regex=True)

我希望它会有所帮助。