Python Pandas将数值从上面替换为最接近的非数字

时间:2018-12-13 10:00:50

标签: python pandas

我遇到了一个问题,感谢您能帮助解决:

假设有一个具有多行的列,如下图所示,我想用上面的最接近的非数字值替换所有数字值,如何处理python和pandas?非常感谢。

click to view the picture

2 个答案:

答案 0 :(得分:0)

to_numericnotna一起用作布尔掩码,用mask替换为NaN s,然后向前填充以前的值:

mask = pd.to_numeric(df['col'], errors='coerce').notna()
df['col'] = df['col'].mask(mask).ffill()
print (df)
    col
0    AB
1    AB
2    AB
3    AB
4    AB
5    CD
6    CD
7    CD
8   EFG
9   EFG
10  EFG
11  EFG

答案 1 :(得分:0)

使用str.isdigitSeries.where

df['A'].where(~df['A'].str.isdigit()).ffill()

或:

df['A'].where(df['A'].str.isalpha()).ffill()
0      AB
1      AB
2      AB
3      AB
4      AB
5      CD
6      CD
7      CD
8     EFG
9     EFG
10    EFG
11    EFG
Name: A, dtype: object