簡體   English   中英

用來自另一個數據幀特定列的值替換來自數據幀特定列的 Nan 值

[英]Replacing Nan value from specific column of a dataframe with value from specific column of another dataframe

我在用其他數據幀的列值替換數據幀的一列中的 nan 值時遇到問題。 這是測試示例:

    Name  Age Name2
0    tom   10   tom
1   nick   15  nick
2   juli   14  juli
3    NaN   12  anne
4  error   17   neo

我想用來自其他數據幀的特定值替換列 Name 中的 Nan 值(不是其他列,如果其中有一些 Nan 值),例如來自這個數據幀的 Name2 值:

    Name  Age Name2
4  error   17   neo

我想得到的是這樣的:

    Name  Age Name2
0    tom   10   tom
1   nick   15  nick
2   juli   14  juli
3    neo   12  anne
4  error   17   neo

這是此示例的測試代碼:

# initialize list of lists 
data = [['tom', 10, 'tom'], ['nick', 15, 'nick'], ['juli', 14, 'juli'], [np.nan, 12, 'anne'], ['error', 17, 'neo']] 

# Create the pandas DataFrame 
df = pd.DataFrame(data, columns = ['Name', 'Age', 'Name2']) 

df1=df[df.Age==np.max(df.Age)]

然后我嘗試了這三種方法,但都不起作用 - 我的數據框始終保持 Nan 值。

df.Name.fillna(df1.Name2, inplace=True)

df.where(df.Name.isnull(), df1.Name2, axis=0)

df[df.Name.isnull()].Name=df1.Name2

你能告訴我我哪里出錯了嗎?

這里有必要將一個元素Series轉換為標量:

df.Name.fillna(df1.Name2.iat[0], inplace=True)
#assign output to new DataFrame, test for not missing values
df = df.where(df.Name.notna(), df1.Name2.iat[0])
#use DataFrame.loc for avoid SettingWithCopyWarning
df.loc[df.Name.isnull(), 'Name']=df1.Name2.iat[0]

print (df)
    Name  Age Name2
0    tom   10   tom
1   nick   15  nick
2   juli   14  juli
3    neo   12  anne
4  error   17   neo

詳情

print (df1.Name2)
4    neo
Name: Name2, dtype: object

print (df1.Name2.iat[0])
neo

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM