在Pandas数据框中的列中查找公共值

时间:2015-06-22 20:32:47

标签: python pandas

我有样式的数据框:

\u2022

D行中的不同条目告诉我有错误。我需要删除动物不一样的所有行。列具有相同的名称。

我确定这应该很简单! 非常感谢。

2 个答案:

答案 0 :(得分:1)

预备代码生成的结构与您的结构相同。有趣的是,我无法命名列animal并加入suffix = ("","") - 这会引发错误ValueError: columns overlap but no suffix specified: Index([u'animal'], dtype='object')。 @ chrisaycock关于重命名列的评论工作正常。

import pandas as pd

# prepare the dataframe
a1 = ['Dog','Cat','Pig','Cat']
a2 = ['Dog','Cat','Pig','Dog']
df1 = pd.DataFrame({"ani": a1})
df2 = pd.DataFrame({"ani": a2})
# trickery required to get two columns with the same name
df = pd.merge(df1, df2, left_index=True,right_index = True, suffixes=("mal", "mal"))

# fix the column names
df.columns = ['animal1', 'animal2']

# keep only matching rows
df = df[df.animal1 == df.animal2]

答案 1 :(得分:-1)

根据索引迭代数据框并检查返回值。

>>> for i in df.index:
...     if len(set(df.ix[i])) != 1:
...             df.drop(i)