我有一个看起来像这样的数据框:
0 1 2 3 4 5 6 7 8 9 10 11
12 13 13 13.4 13.4 12.4 12.4 16 0 0 0 0
14 12.2 12.2 13.4 13.4 12.6 12.6 19 5 5 6.7 6.7
.
.
.
每个“层”/行都有我想要减少的重复项对。
一个问题是也有重复的 0,所以我不能简单地删除每行的重复项,否则会留下不均匀的行数。
我想要的输出是一个 lambda 函数,我可以将其应用于此数据框的所有行以获取此信息:
0 1 2 3 4 5 6
12 13 13.4 12.4 16 0 0
14 12.2 13.4 12.6 19 5 6.7
.
.
.
我可以编写一个简单的函数来执行此操作吗?
最佳答案
方法一使用transpose
正如 Yuca 在评论中提到的:
df = df.T.drop_duplicates().T
df.columns = range(len(df.columns))
print(df)
0 1 2 3 4 5 6
0 12.0 13.0 13.4 12.4 16.0 0.0 0.0
1 14.0 12.2 13.4 12.6 19.0 5.0 6.7
方法 2 使用 list comprehension
with even numbers
我们可以制作一个偶数的列表,然后根据它们的索引选择这些列:
idxcols = [x-1 for x in range(len(df.columns)) if x % 2]
df = df.iloc[:, idxcols]
df.columns = range(len(df.columns))
print(df)
0 1 2 3 4 5
0 12 13.0 13.4 12.4 0 0.0
1 14 12.2 13.4 12.6 5 6.7
关于python - 在数据框行上运行以减少重复对 Python,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56044354/