pandas 用下一行的内容填充空单元格

eqqqjvef  于 2023-01-24  发布在  其他
关注(0)|答案(2)|浏览(118)

我已经刮了一个PDF表格,它带有一个恼人的格式化功能。
该表有两列。在某些情况下,一行保留的值应该是A列的值,另一行保留的值应该是B列的值。如下所示:

df = pd.DataFrame()
df['names'] = ['John','Mary',np.nan,'George']
df['numbers'] = ['1',np.nan,'2','3']

我想重新设置数据库的格式,这样只要df ['numbers']中有一个空单元格,它就会用下一行的值来填充它,然后我应用. dropna()来消除仍然错误的单元格。
我说过:

for i in range(len(df)):
  if df['numbers'][i] == np.nan:
    df['numbers'][i] = df['numbers'][i+1]

数据框没有变化,也没有错误信息。
我错过了什么?

6ojccjat

6ojccjat1#

虽然我不认为这解决了所有问题,但不更新 Dataframe 的原因是if df['numbers'][i] == np.nan:行,因为它的计算结果总是False。
在这种情况下,要实现nan的vlayed测试,必须使用if pd.isnull(df['numbres'][i]):,这将根据单元格内容计算True或False。

gdrx4gfi

gdrx4gfi2#

这是我找到的解决方案:

df[['numbers']] = df[['numbers']].fillna(method='bfill')
df = df[~df['names'].isna()]

这可能不是最优雅的,但它的工作。

相关问题