我有以下的dataframe
| a| b_1 | b_2 |b_3 |c_1 | c_2 | c_3 |
|--|-----------|-----------|-----|-----------|-----------|-----|
|e1|3295.000000|-775.000000|604.5|3575.000000|-626.000000|604.5|
|e2|3615.000000|-731.000000|604.5|1 |0 |0 |
|e3|3615.000000|-731.000000|604.5|3575.000000|-626.000000|604.5|
|e2|3615.000000|-731.000000|604.5|1 |0 | 0 |
|e1|3295.000000|-775.000000|604.5|3575.000000|-626.000000|604.5|
|e4| 0 |0 | 0 |0 |0 | 0 |
我希望生成的dataframe
如下所示
|a | b |c | d |
|--|--------------------------------|-------------------------------|------|
|e1| [3295.000000,-775.000000,604.5]|[3575.000000,-626.000000,604.5]|e3|
|e2| [3615.000000,-731.000000,604.5]|[1, 0, 0] |e3|
|e3| [3615.000000,-731.000000,604.5]|[3575.000000,-626.000000,604.5]|e1, e2|
|e4| [0, 0, 0] |[0, 0, 0] |None |
请注意,b
和c
包含大小为3的numpy
数组。
用于填充列d
的参数如下:
1.如果活动行的b
中的值等于b
中除其自身之外的任何其他记录,则取这些记录的a
值。
1.如果活动行的b
中的值等于c
中除其自身之外的任何其他记录,则取这些记录的a
值。
1.如果活动行的c
中的值等于c
中除其自身之外的任何其他记录,则取这些记录的a
值。
1.无其他
1条答案
按热度按时间t9aqgxwy1#
按
a
列使用DataFrame.drop_duplicates
:然后将值转换为numpy数组,因为每列始终有相同的3个值
b,c
:与广播比较,通过将
False
设置为对角掩码排除相同行:然后使用
numpy.dot
作为df1['a']
的连接值,删除最后一个,
并替换空字符串: