在两个有条件的数字之间找到> 25

时间:2019-01-18 11:47:13

标签: python for-loop foreach while-loop

我有两个类似的数据框

df1 

s.no   value    date
0      90       04/12/18
1      89       05/12/18
2      75       06/12/18

df2
s.no   value    date
0      55       04/12/18
1      90       04/12/18 
2      85       04/12/18
3      71       04/12/18
4      53       04/12/18
5      89       05/12/18
6      76       05/12/18
7      69       05/12/18
8      58       05/12/18
9      75       06/12/18  

我需要在18/12/4到05/12/18之间获得<= 75,例如05/12/18和06/12/2018

我的预期输出

df3
s.no      value     date
3         71        04/12/18  
7         69        05/12/18
...

如何使用for循环或python中的任何其他概念获取df3表

2 个答案:

答案 0 :(得分:1)

听起来有点像作业。您可以以此为起点:

input = """s.no   value    date
0      55       04/12/18
1      90       04/12/18 
2      85       04/12/18
3      71       04/12/18
4      53       04/12/18
5      89       05/12/18
6      76       05/12/18
7      69       05/12/18
8      58       05/12/18
9      75       06/12/18
"""

value_start_pos = 8 - 1
date_start_pos = 17 - 1

for line in input.splitlines():
    sno = line[:value_start_pos].rstrip()
    value = line[value_start_pos:date_start_pos].rstrip()
    date = line[date_start_pos:].rstrip()

    print("sno: {}".format(sno))
    print("Date: {}".format(date))
    print("Value: {}".format(value))

那么,剩下的任务就是您了:

  1. 跳过标题行(在上面添加了4个字符)
  2. 解析日期以进行比较(需要一个导入+调用)
  3. 过滤出不符合条件的日期(使用与上述相同的导入方式)
  4. 格式化输出数据(在https://docs.python.org/3.7/library/string.html#format-string-syntax中检出Aligning the text and specifying a width:或在Python 2中检出https://docs.python.org/2/library/string.html#format-string-syntax

听起来像一个有趣的小入门任务,尽情享受吧!

答案 1 :(得分:0)

这可能需要一些解决方法,但是您可以尝试一下。

您可以从slicing数据帧开始:

t_slice = slice('2018-12-04','2018-12-06')

df1_a = df1[t_slice]
df2_a = df2[t_slice]

然后根据您的条件进行过滤:

df1_b = df1_a[df1_a.value <= 75]
df2_b = df2_a[df2_a.value <= 75]

然后您可以concatenate两个数据帧:

df3 = pd.concat(df1_b,df2_b)