我有两个类似的数据框
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表
答案 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))
那么,剩下的任务就是您了:
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)