我有一个包含三列no
,name
和date
的df。如果no
和date
匹配,它们的值将在output
列中添加到列表中。
例如:1234和2从0行和1行匹配-所以[a,b]
如果no
和date
不匹配,则将相同的name
值添加到列表中
no name date
0 1234 a 2
1 1234 b 2
2 1234 c 3
3 456 d 1
4 456 e 2
5 789 f 5
结果输出。
no name date output
0 1234 a 2 [a,b]
1 1234 b 2 [a,b]
2 1234 c 3 [c]
3 456 d 1 [d]
4 456 e 2 [e]
5 789 f 5 [f]
答案 0 :(得分:1)
您可以尝试
import Modal from 'react-native-modal'
const modalRef = React.createRef();
const modal = <Modal ref={modalRef} isVisible={false}>
<ModalController modal={modalRef} />
export const ModalController = ({modal}) => {
function onButtonPress(){
modal.setState({isVisible:true})
modal.setNativeProps({isVisible:true})
}
return (
<Button title='Show Modal' onPress={onButtonPress()} />
)
}
来获取groupby.agg(list)
和no
的每种组合的列表,然后date
进行分配:
merge
输出:
df.merge(df.groupby(['no','date'])['name']
.agg(list).rename('output'),
on=['no', 'date']
)
答案 1 :(得分:1)
另一种解决方案是将groupby
和transform
与sum
和list
组合在一起。不过,您必须了解一下性能。
df['output'] = df.groupby(['no', 'date'])['name'].transform(sum).apply(list)
no name date output
0 1234 a 2 [a, b]
1 1234 b 2 [a, b]
2 1234 c 3 [c]
3 456 d 1 [d]
4 456 e 2 [e]
5 789 f 5 [f]