我遇到了一个问题,感谢您能帮助解决:
假设有一个具有多行的列,如下图所示,我想用上面的最接近的非数字值替换所有数字值,如何处理python和pandas?非常感谢。
答案 0 :(得分:0)
将to_numeric
与notna
一起用作布尔掩码,用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)
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