从pandas数据框架中删除特定的nan值



我有下面的表,我想删除NaN值,基本上让两个值在同一行。

| ID         | Name   | NewID    |NewName|
| ---------- | ------ |----------|------|
| (int, 500) | Crosby |    NaN   |  NaN |
|    NaN     |   NaN  |(str, 500)|Sidney|

是否有办法删除这些并使pandas中的同一行中的单词,从而使输出像这样?

| ID         | Name   | NewID     | NewName|
| ---------- | ------ |-----------|--------|
| (int, 500) | Crosby |(str, 500) | Sidney |

df=df.dropna将删除整行,因此这将不起作用

使用fillna向前填充NaN值,然后删除NaN行

df2=df.fillna(method="ffill")
df2.dropna()
df2
ID          Name    NewID       NewName
1   (int,500)   Crosby  (str,500)   Sidney

如果您的数据是静态的,您可以使用shift将所有内容推入正确的行

df = pd.DataFrame({
'ID' : [1, np.nan],
'Name' : ['Crosby', np.nan],
'NewID' : [np.nan, 2],
'NewName' : [np.nan, 'Sidney']
})
df[['NewID', 'NewName']] = df[['NewID', 'NewName']].shift(-1)
df = df.dropna()
df

最新更新