mli*_*imb 6 python dataframe pandas
我有一个包含 21 列的 Pandas 数据框。我关注的是具有完全相同列数据值的行的子集,除了每行唯一的 6 个行。我不知道这 6 个值对应于哪个列标题。
我尝试将每一行转换为 Index 对象,并对两行执行设置操作。前任。
row1 = pd.Index(sample_data[0])
row2 = pd.Index(sample_data[1])
row1 - row2
Run Code Online (Sandbox Code Playgroud)
它返回一个 Index 对象,其中包含对 row1 唯一的值。然后我可以手动推断哪些列具有唯一值。
如何以编程方式获取这些值在初始数据框中对应的列标题?或者,有没有办法比较两个或多个数据框行并提取每行的 6 个不同列值以及相应的标题?理想情况下,生成具有唯一列的新数据框会很好。
特别是,有没有办法使用集合操作来做到这一点?
谢谢你。
这是仅返回前两行不同的列的快速解决方案。
In [13]: df = pd.DataFrame(zip(*[range(5), list('abcde'), list('aaaaa'),
... list('bbbbb')]), columns=list('ABCD'))
In [14]: df
Out[14]:
A B C D
0 0 a a b
1 1 b a b
2 2 c a b
3 3 d a b
4 4 e a b
In [15]: df[df.columns[df.iloc[0] != df.iloc[1]]]
Out[15]:
A B
0 0 a
1 1 b
2 2 c
3 3 d
4 4 e
Run Code Online (Sandbox Code Playgroud)
以及在整个框架中查找具有多个唯一值的所有列的解决方案。
In [33]: df[df.columns[df.apply(lambda s: len(s.unique()) > 1)]]
Out[33]:
A B
0 0 a
1 1 b
2 2 c
3 3 d
4 4 e
Run Code Online (Sandbox Code Playgroud)