Python pandas applymap 异常值的错误处理
Python pandas applymap error handling for unexpected value
.applymap() 的错误处理
我在考虑如何处理错误。
我正在查看 pandas applymap() 文档并找到 ignore_na 但这不是我要找的。
这是数据框
df
SNP_1
SNP_2
SNP_3
T:G
T:G
ACC:ACC
T:G
T:G
ACC:ACC
T:G
T:G
ACC:ACC
dict_map = {'T:G': 'K'}
df = df.applymap(lambda x: dict_map[x])
KeyError: 'ACC:ACC'
很明显,我收到一个错误。实际上,我没想到会在数据框中找到它。现在我想摆脱整个专栏。
预期的输出将是一个没有 df['SNP_3']
列的字典映射数据框。有没有办法在应用字典映射时识别要删除的列?
df
SNP_1
SNP_2
K
K
K
K
K
K
我不知道。它可以帮助解决您的问题。
dict_map = { 'T:G': 'K'}
df = df.applymap(lambda x: dict_map[x] if x in dict_map else "")
SNP_1
SNP_2
SNP_3
K
k
K
k
K
k
这是一种方法。首先,用 NaN
填充不可映射的列,然后删除它们:
df = df.applymap(lambda x: dict_map[x] if x in dict_map else pd.NA)
df = df.dropna(axis=1, how='all')
输出:
SNP_1 SNP_2
0 K K
1 K K
2 K K
.applymap() 的错误处理
我在考虑如何处理错误。
我正在查看 pandas applymap() 文档并找到 ignore_na 但这不是我要找的。
这是数据框
df
SNP_1 | SNP_2 | SNP_3 |
---|---|---|
T:G | T:G | ACC:ACC |
T:G | T:G | ACC:ACC |
T:G | T:G | ACC:ACC |
dict_map = {'T:G': 'K'}
df = df.applymap(lambda x: dict_map[x])
KeyError: 'ACC:ACC'
很明显,我收到一个错误。实际上,我没想到会在数据框中找到它。现在我想摆脱整个专栏。
预期的输出将是一个没有 df['SNP_3']
列的字典映射数据框。有没有办法在应用字典映射时识别要删除的列?
df
SNP_1 | SNP_2 |
---|---|
K | K |
K | K |
K | K |
我不知道。它可以帮助解决您的问题。
dict_map = { 'T:G': 'K'}
df = df.applymap(lambda x: dict_map[x] if x in dict_map else "")
SNP_1 | SNP_2 | SNP_3 |
---|---|---|
K | k | |
K | k | |
K | k |
这是一种方法。首先,用 NaN
填充不可映射的列,然后删除它们:
df = df.applymap(lambda x: dict_map[x] if x in dict_map else pd.NA)
df = df.dropna(axis=1, how='all')
输出:
SNP_1 SNP_2
0 K K
1 K K
2 K K