gpt4 book ai didi

python - 如何从一列中找到也出现在 Python DataFrame 另一列中的元素

转载 作者:太空宇宙 更新时间:2023-11-04 02:31:46 25 4
gpt4 key购买 nike

我已将以下玩具化学 react 转换为 DataFrame 以进一步表示二分网络:

R1:A + B -> C

R2:C + D -> E

SourceTarget
R1 C
A R1
B R1
R2 E
C R2
D R2

现在,我想从这个创建一个新的 DataFrame,仅表示基于化合物的 react 之间的关系,例如:在上面的 DataFrame 中,C 是来自 R1Target 并且 C 也是 Source对于R2,那么,关系应该是:

R1->R2

(我能为上面的 Daframe 获得的唯一 react - react 关系)

我为此任务创建的代码如下:

newData=[]
for i in range(0,len(data["Target"].index.values)):
for j in range(0,len(data["Source"].index.values)):
if data.iloc[i,1] == data.iloc[j,0] and not re.match("R.",
data.iloc[i,1], flags=0):
newData.append(data.iloc[i,0] +"\t" + data.iloc[j,1])

代码有效,但是,对于大表(数千行)它变得非常慢......我仍然是一个初学者,所以如果你能帮助我改进它我会很高兴。谢谢=D

最佳答案

您可以在日期框上合并数据框

RtoC = df.merge(df,how='inner',left_on='Source',right_on='Target')\
.drop(['Target_y','Source_x'],axis=1)\
.rename(columns={'Target_x':'Target','Source_y':'Source'})

然后过滤掉化合物

RtoC[(RtoC.Target.str.contains('\d()')) & (RtoC.Source.str.contains('\d()'))]


Target Source
4 R2 R1

或者转换为字典,映射值和过滤

mapper = dict(df.values[::-1])

df.Target = df.Target.map(mapper)

df[(df.Target.str.contains('\d()')) & (df.Source.str.contains('\d()'))]

Source Target
0 R1 R2

关于python - 如何从一列中找到也出现在 Python DataFrame 另一列中的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49036537/

25 4 0
文章推荐: c - 为什么我无法在 Raspberry Pi 上使用 D2XX 访问我的 FTDI 设备?
文章推荐: html - 如何让 2 个单独的
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com