例如,如果我有一个动物园中所有个体的大型 Dataframe ,其中两列是Animal_Common_Name和Animal_Scientific_Name,我怀疑其中一列是多余的,因为一个特征完全由另一个特征决定,反之亦然。基本上是相同的特征,但被重命名。是否有选择两个不同列的函数告诉您这一点?
txu3uszq1#
假设这个例子:
Animal_Common_Name Animal_Scientific_Name 0 Lion Panthera leo 1 Giraffe Giraffa camelopardalis 2 Lion Panthera leo
使用factorize转换为分类整数,然后比较所有值是否相等:
factorize
(pd.factorize(df['Animal_Common_Name'])[0] == pd.factorize(df['Animal_Scientific_Name'])[0]).all()
输出:True如果要标识多个关系:
True
df[df.groupby('Animal_Scientific_Name')['Animal_Common_Name'].transform('nunique').ne(1)]
交换的列名也是如此。
t5fffqht2#
df['Animal_Common_Name'].equals(df['Animal_Scientific_Name'])
如果它们相同,则返回True,否则返回False。
lsmepo6l3#
您可以使用pandas.Series.equals()方法。例如:
pandas.Series.equals()
import pandas as pd data = { 'Column1': [1, 2, 3, 4], 'Column2': [1, 2, 3, 4], 'Column3': [5, 6, 7, 8] } df = pd.DataFrame(data) # True print(df['Column1'].equals(df['Column2'])) # False print(df['Column1'].equals(df['Column3']))
通过GeeksForGeeks找到
pieyvz9o4#
您可以使用Pandas的矢量化操作来快速确定冗余。下面是一个示例:
import pandas as pd # create a sample dataframe from some data d = {'name1': ['Zebra', 'Lion', 'Seagull', 'Spider'], 'name2': ['Zebra', 'Lion', 'Bird', 'Insect']} df = pd.DataFrame(data=d) # create a new column for your test: df['is_redundant'] = '' # select your empty column where the redundancy exists: df['is_redundant'][df['name1']==df['name2']] = 1 print(df) name1 name2 is_redundant 0 Zebra Zebra 1 1 Lion Lion 1 2 Seagull Bird 3 Spider Insect
然后,您可以将空值替换为0或保留原样,具体取决于您的应用。
4条答案
按热度按时间txu3uszq1#
假设这个例子:
使用
factorize
转换为分类整数,然后比较所有值是否相等:输出:
True
如果要标识多个关系:
交换的列名也是如此。
t5fffqht2#
如果它们相同,则返回True,否则返回False。
lsmepo6l3#
您可以使用
pandas.Series.equals()
方法。例如:
通过GeeksForGeeks找到
pieyvz9o4#
您可以使用Pandas的矢量化操作来快速确定冗余。下面是一个示例:
然后,您可以将空值替换为0或保留原样,具体取决于您的应用。