我有下面的表,我想删除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