python - 在数据框行上运行以减少重复对 Python

标签 python python-3.x pandas dataframe lambda

我有一个看起来像这样的数据框:

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/

相关文章:

python - 确定和存储 Voronoi Cell Adjacency

python - 从字符串列表中删除字符

python - 如何从查询结果中去除 "Decimal"

python - 为什么 python 在定义时而不是在调用时评估函数的参数?

类似于 Python range() 的 JavaScript 函数

python - 如何检查python panda中特定范围内的日期时间列?

python - 变量值不更新

python - Pandas 数据框中的可变移位

python - 加载文件中的错误 ylabels

Pandas :如何检查 Pandas 数据框是否包含特定值?