gpt4 book ai didi

python - python数据框中行和列之间的公共(public)元素

转载 作者:行者123 更新时间:2023-12-01 09:12:10 24 4
gpt4 key购买 nike

我有两个数据框。第一个,如下所示,有三列。

Col_1   Col_2   Col_3
aaa dfd ccc
sdf jjj sge
rty fgh rtg
hji dfg hyt
lkj bgh dcf

在每一行中,有一个元素与下面显示的第二个数据框中的元素之一相同(当然,第二个数据框中的元素不必有任何特定的顺序)。

list
ccc
sge
fgh
dfg
dcf

我的目标是遍历第一个数据帧中的每一行,并找到第二个数据帧的共同元素。随后将该元素置于行首。预期结果如下:

预期结果

Col_1   Col_2   Col_3
ccc aaa dfd
sge sdf jjj
fgh rty rtg
dfg hji hyt
dcf lkj bgh

任何帮助将不胜感激!

最佳答案

使用 .apply pandas DataFrame 的方法,您可以在一行中完成。这将比手动迭代行更快。

它只使用 pandas 并在行级​​别上工作,首先检查是否有任何行元素在 ls 中,对返回的二进制指示符(真到行前)进行排序,然后重新索引要按此顺序排序的行。然后它将结果广播回原始行。

import pandas as pd

df = pd.DataFrame({'col1':['aaa','sdf','rty','hji','lkj'],
'col2':['dfd','jjj','fgh','dfg','bgh'],
'col3':['ccc','sge','rtg','hyt','dcf']})

ls = pd.Series(['ccc','sge','fgh','dfg','dcf'])

df = df.apply(lambda x: x[(~x.isin(ls)).argsort()],
axis=1,
result_type='broadcast')

返回:

    col1  col2   col3
0 ccc aaa dfd
1 sge sdf jjj
2 fgh rty rtg
3 dfg hji hyt
4 dcf lkj bgh

关于python - python数据框中行和列之间的公共(public)元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59220603/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com