Python 如何在具有';那是一个numpy数组?
我正在尝试删除重复项,它适用于普通的pandas列,但当我尝试在numpy数组的列上执行此操作时,出现了一个错误:Python 如何在具有';那是一个numpy数组?,python,pandas,Python,Pandas,我正在尝试删除重复项,它适用于普通的pandas列,但当我尝试在numpy数组的列上执行此操作时,出现了一个错误: new_df = new_df.drop_duplicates(subset=['ticker', 'year', 'embedding']) 我得到这个错误: 4 frames /usr/local/lib/python3.7/dist-packages/pandas/core/algorithms.py in _factorize_array(values, na_senti
new_df = new_df.drop_duplicates(subset=['ticker', 'year', 'embedding'])
我得到这个错误:
4 frames
/usr/local/lib/python3.7/dist-packages/pandas/core/algorithms.py in _factorize_array(values, na_sentinel, size_hint, na_value, mask)
509 table = hash_klass(size_hint or len(values))
510 uniques, codes = table.factorize(
--> 511 values, na_sentinel=na_sentinel, na_value=na_value, mask=mask
512 )
513
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable.factorize()
pandas/_libs/hashtable_class_helper.pxi in pandas._libs.hashtable.PyObjectHashTable._unique()
TypeError: unhashable type: 'numpy.ndarray'
此外,如果有帮助,请看以下我的数据:
ticker year embedding
0 a.us 2020.0 [0.0, 0.0, 0.0, 0.62235785, 0.0, 0.27049118, 0...
1 a.us 2020.0 [0.0, 0.0, 0.0, 0.62235785, 0.0, 0.27049118, 0..
我曾考虑强制转换为字符串,但我需要pandas列中的数组保持为numpy,因此我不确定如何在此处干净地删除重复项。这里我将做什么:
>>> df
ticker year embedding
0 a.us 2020 [0.0, 0.0, 0.0, 0.62235785, 0.0, 0.27049118]
1 a.us 2020 [0.0, 0.0, 0.0, 0.62235785, 0.0, 0.27049118]
>>> cond1 = df.drop(columns="embedding").duplicated()
>>> cond1
0 False
1 True
dtype: bool
>>> cond2 = pd.DataFrame(df["embedding"].to_list()).duplicated()
>>> cond2
0 False
1 True
dtype: bool
要删除重复值,请执行以下操作:
>>> df[~(cond1 & cond2)]
ticker year embedding
0 a.us 2020 [0.0, 0.0, 0.0, 0.62235785, 0.0, 0.27049118]
这似乎是一个解决方案。不要在单元格中存储numpy阵列。您可以有1000列,每个列对应嵌入的一个组件。您好,当我执行cond1=new_df.drop(columns=“embedding”).duplicated()-我在TypeError上面得到了相同的错误:unhable type:'numpy.ndarray'new_df.info()的输出是什么??