Python 3.x 如何用数据帧中列中的整数替换字符值行?

Python 3.x 如何用数据帧中列中的整数替换字符值行?,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,我正在处理一个大型数据集,我面临的问题是,有些列包含所有整数值,但是,由于数据集未清理,因此有一些行包含“字符”和整数。这里我试图用一个小熊猫数据帧示例来说明这个问题 我有以下数据帧: 指数 l1 l2 l3 0 1. 123 23 1. 2. Z3V 343 2. 3. 321 21 3. 4. AZ34 345 4. 5. 432 3. 你可以做: import pandas as pd import numpy as np # setup l1, l2, l3 = [1, 2, 3, 4

我正在处理一个大型数据集,我面临的问题是,有些列包含所有整数值,但是,由于数据集未清理,因此有一些行包含“字符”和整数。这里我试图用一个小熊猫数据帧示例来说明这个问题

我有以下数据帧:

指数 l1 l2 l3 0 1. 123 23 1. 2. Z3V 343 2. 3. 321 21 3. 4. AZ34 345 4. 5. 432 3. 你可以做:

import pandas as pd
import numpy as np

# setup
l1, l2, l3 = [1, 2, 3, 4, 5, 6], [123, 'Z3V', 321, 'AZ34', 432, 'Z3V'], [23, 343, 21, 345, 3, 3]
data = pd.DataFrame(zip(l1, l2, l3), columns=['l1', 'l2', 'l3'])

# find all non numeric values across the whole DataFrame
mask = data.applymap(np.isreal)
rows, cols = np.where(~mask)

# create the replacement dictionary 
replacements = {k: i for i, k in enumerate(np.unique(data.values[rows, cols]), 100)}

# apply the replacements
res = data.replace(replacements)
print(res)
输出

   l1   l2   l3
0   1  123   23
1   2  101  343
2   3  321   21
3   4  100  345
4   5  432    3
5   6  101    3
请注意,我添加了一个额外的行来验证Desired行为,现在
data
DataFrame如下所示:

   l1    l2   l3
0   1   123   23
1   2   Z3V  343
2   3   321   21
3   4  AZ34  345
4   5   432    3
5   6   Z3V    3
通过更改此行:

# create the replacement dictionary
replacements = {k: i for i, k in enumerate(np.unique(data.values[rows, cols]), 100)}

您可以根据需要更改替换值。

请添加一个可以复制到文本编辑器中的数据框表示形式。100和101后面的逻辑是什么?@danimesjo added DataFramecode@TimBiegeleisen澄清了逻辑。