dra*_*d07 5 python nan dataframe pandas
我有一个数据框(在 Python 中)如下:
A B C D E F G H
0 T-1 2 3 - M-7 2 2
1 T-2 5 4 2 M-7 4 3
2 T-3 - - 3 M-7 9 4
3 T-4 6 - 4 M-7 - 9 5
4 T-5 - 1 5 M-7 8 6
Run Code Online (Sandbox Code Playgroud)
我想用.替换破折号(不包括A和E列中的破折号)NaN。
我试过了。df.replace('-', np.nan)它最终也替换了 A 列和 E 列的整个单元格。我想我可以使用,df[column_name].replace('-',np.nan)但我必须分别为每一列应用它。
有没有其他有效的方法可以用于具有类似限制的任意数量的列?
这应该有效。
df = pd.DataFrame({'A': list('abcde'),
'B': ['T-1', 'T-2', 'T-3', 'T-4', 'T-5'],
'C': ['a', '-', 'c', 'd', '-'],
'D': ['-', 'b', 'c', 'd', 'e'],
'E': ['M-7', 'M-7', 'M-7', 'M-7', 'M-7'],
'F': ['a', '-', 'c', '-', '-'],
'G': ['a', 'b', 'c', 'd', '-'],
'H': ['a', 'b', '-', 'd', '-']
})
df = df.astype(str)
s = df.applymap(lambda x: re.sub(r'^-$', str(np.NaN), x))
Run Code Online (Sandbox Code Playgroud)
输出:
A B C D E F G H
0 a T-1 a nan M-7 a a a
1 b T-2 nan b M-7 nan b b
2 c T-3 c c M-7 c c nan
3 d T-4 d d M-7 nan d d
4 e T-5 nan e M-7 nan nan nan
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
6127 次 |
| 最近记录: |