gpt4 book ai didi

python - 使用 pandas 查找重叠

转载 作者:太空宇宙 更新时间:2023-11-03 15:19:16 25 4
gpt4 key购买 nike

文件1:

col0 col1 col2 col3
1 20 10 -
1 25 30 +
2 50 40 -
2 60 70 +

文件2:

col0 col1 col2 col3 col4 col5
1 25 5 - e1 e2
1 20 30 + e4 e24
2 45 35 - e9 e12
2 55 75 + e10 e21

我需要检查 3 个条件:1) 检查 col0 中的元素是否相同 (1 ==1)

2) 如果是,则检查 col3 是否为 - 或 +,如果 - 则 col1 值将高于 col2,如果为 +,则相反,

3) 检查范围是否在 file2 的 col1 和 col2 内,即 如果满足所有条件,第二行 25-30 落在 20-30 范围内,则输出文件 1 中的行以及文件 2 中的 col4 和 col5(这是一些元信息)

col0 col1 col2 col3 col4 col5
1 20 10 - e1 e2
1 25 30 + e4 e24
2 50 40 - e9 e12
2 60 70 + e10 e21

简单的Python代码会有这样的条件

for i in file1:
for j in file2:
if i[1]<j[1] and i[2]<j[2] and i[0]==j[0]:
print j

不确定如何解释该标志,我如何使用 pandas 实现此目的,否则 pandas 不是正确的方法?

最佳答案

这是一种方法:

生成OP提供的样本数据

# copy file1 data from OP, then run:
df1 = pd.read_clipboard().reset_index()

# copy file2 data from OP, then run:
df2 = pd.read_clipboard().reset_index()

合并和过滤数据

# merge data on row index and col0 value
df3 = (df1.merge(df2.drop('col3',1), on=['index','col0'], suffixes=('_1','_2'))
.drop('index',1))

# sort range cols from file2
df3[['col1_2','col2_2']] = df3[['col1_2','col2_2']].apply(sorted, axis='columns')

# filter based on file1 range within file2 range, drop extra cols
df3 = (df3.loc[df3.col1_1.between(df3.col1_2, df3.col2_2) & df3.col2_1.between(df3.col1_2, df3.col2_2)]
.drop(['col1_2','col2_2'], 1))
print(df3)

输出

   col0  col1_1  col2_1 col3 col4 col5
0 1 20 10 - e1 e2
1 1 25 30 + e4 e24
3 2 60 70 + e10 e21

关于python - 使用 pandas 查找重叠,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43641027/

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