我正在尝试将列转换为数字,如果列中的大多数值都是数字但有些值包含字符串值,则该函数应返回包含字符串值的列的行号。 我的数据集:
received
11
12
0
-340
2
9
1
aa
nn
qbb
预期输出:行号:8,9,10包含字符串值
答案 0 :(得分:1)
我认为需要按to_numeric
与errors='coerce'
进行过滤,以获得非NaN
非数字的返回isnull
:
i = df.index[pd.to_numeric(df['received'], errors='coerce').isnull()]
print (i)
Int64Index([7, 8, 9], dtype='int64')
来自0
的 python计数,所以如果需要从1
的计数中更改它:
i = df.index[pd.to_numeric(df['received'], errors='coerce').isnull()] + 1
print (i)
Int64Index([8, 9, 10], dtype='int64')
对于字典使用:
d = df.loc[pd.to_numeric(df['received'], errors='coerce').isnull(), 'received'].to_dict()
print (d)
{8: 'nn', 9: 'qbb', 7: 'aa'}