【发布时间】:2018-12-23 03:11:34
【问题描述】:
我有一个包含 4 列的数据框
数据框 1:
column_A column_B column_C id
0 1 1 anna 123
1 2 1 anna 7
2 30 2 bob 42
3 20 2 bob 12
4 10 2 charlie 1
5 100 3 charlie 2
现在,我想计算一个具有以下属性的新数据框(数据框 2)
id_1 id_2 val
0 123 7 1
1 42 12 1
2 42 1 2
3 12 1 2
4 1 2 3
val == 1,如果跨行column_B 和column_C 中的两个对应值 匹配
val == 2,如果跨行只有对应的值在column_B匹配
val == 3,如果跨行只有对应的值在column_C匹配
我当前的实现是 O(N^2)。考虑到数据帧很大,是否可以使用一些并行化来加快处理速度。
我们也可以将问题解释为在 Pandas 数据框中找到一对行索引,其中 column_B 和 column_C 中的值相同。 示例:Row[0] 和 row[1] 在 column_B 和 column_C 中具有相同的值
【问题讨论】:
-
val == 1,如果 column_B 和 column_C 中的两个值都匹配您正在寻找匹配的基础,因为框架具有不同的 dTypes
-
对应的值匹配,比如例子中给定的对应值在行对(0,1)和(2,3)匹配中的column_B和column_C
-
对不起,还是不明白。
-
Dataframe 1 是基本数据帧,id 列作为每一行的标识符。现在我需要找到成对的 ID,其中 column_B 和 Column_C 中的相应值匹配。在上面的示例中,row[0] 和 row[1] 在 column_B 和 column_C 中具有相同的对应值,因此,我在数据帧 2 中创建了一个新行,例如 (123,7,1)
-
column_B和column_C的对应值如何匹配?一个是 int 另一个是字符串。
标签: python pandas dataframe pandas-groupby