我目前有一个熊猫数据框。第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。
无论如何要实现这一目标?
答案 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)
我希望它会有所帮助。