沿着 DataFrame 中的行处理重复项并删除 Python Pandas 中除最后一个以外的所有内容
Working through duplicates along rows in DataFrame and deleting all except the last one in Python Pandas
我在 Pandas 数据清理中苦苦挣扎。我做了一个简单的例子来证明我的问题。对于每一行,我想删除重复项并保留最后一行。目前,我的 DataFrame 是 'animals'。我希望它成为 DataFrame 'animals_clean'
想象一下这个 DataFrame。您可以看到沿 axis=0 的重复项,例如'cat' 在第 0 行重复
list_of_animals = [['cat','dog','monkey','sparrow', 'cat'],['cow', 'eagle','rat', 'eagle', 'owl'],['deer', 'horse', 'goat', 'falcon', 'falcon']]
animals = pd.DataFrame(list_of_animals)
外观:
这就是我想要的结果。您可以看到每一行中的重复项都被标记为 'X' 保留最后一个。
list_of_animals_clean = [['X','dog','monkey','sparrow', 'cat'],['cow', 'X','rat', 'eagle', 'owl'], ['deer', 'horse', 'goat', 'X', 'falcon']]
animals_clean = pd.DataFrame(list_of_animals_clean)
应该看起来像:
尝试 apply + mask + duplicated 和 keep='last':
import pandas as pd
list_of_animals = [['cat', 'dog', 'monkey', 'sparrow', 'cat'],
['cow', 'eagle', 'rat', 'eagle', 'owl'],
['deer', 'horse', 'goat', 'falcon', 'falcon']]
animals = pd.DataFrame(list_of_animals)
animals = animals.apply(
lambda s: s.mask(s.duplicated(keep='last'), 'x'),
axis=1
)
print(animals)
输出:
0 1 2 3 4
0 x dog monkey sparrow cat
1 cow x rat eagle owl
2 deer horse goat x falcon
我在 Pandas 数据清理中苦苦挣扎。我做了一个简单的例子来证明我的问题。对于每一行,我想删除重复项并保留最后一行。目前,我的 DataFrame 是 'animals'。我希望它成为 DataFrame 'animals_clean'
想象一下这个 DataFrame。您可以看到沿 axis=0 的重复项,例如'cat' 在第 0 行重复
list_of_animals = [['cat','dog','monkey','sparrow', 'cat'],['cow', 'eagle','rat', 'eagle', 'owl'],['deer', 'horse', 'goat', 'falcon', 'falcon']]
animals = pd.DataFrame(list_of_animals)
外观:
这就是我想要的结果。您可以看到每一行中的重复项都被标记为 'X' 保留最后一个。
list_of_animals_clean = [['X','dog','monkey','sparrow', 'cat'],['cow', 'X','rat', 'eagle', 'owl'], ['deer', 'horse', 'goat', 'X', 'falcon']]
animals_clean = pd.DataFrame(list_of_animals_clean)
应该看起来像:
尝试 apply + mask + duplicated 和 keep='last':
import pandas as pd
list_of_animals = [['cat', 'dog', 'monkey', 'sparrow', 'cat'],
['cow', 'eagle', 'rat', 'eagle', 'owl'],
['deer', 'horse', 'goat', 'falcon', 'falcon']]
animals = pd.DataFrame(list_of_animals)
animals = animals.apply(
lambda s: s.mask(s.duplicated(keep='last'), 'x'),
axis=1
)
print(animals)
输出:
0 1 2 3 4
0 x dog monkey sparrow cat
1 cow x rat eagle owl
2 deer horse goat x falcon