我的需求是,需要用python写一段程序解决以下问题:
1、我有一组数据:end_data[‘20101011’,‘20110203’,‘20110506’,‘20120608’,‘20130807’,‘20140611’],让其中的每个数据与另一个数据‘20110406’进行比较,条件为>='20110406'。
2、可以得到满足这个条件的数据返回值true,不满足这个条件的为false,但如何将为true的数据筛选出来组成一个新的dataframe?
end_date = ['20101011','20110203','20110506','20120608','20130807','20140611'] test_date = '20110406' for i in end_date: if(int(i)>=int(test_date)): print(int(i))
你这是数据是DataFame吧?直接用pandas的判断
end_data=['20101011','20110203','20110506','20120608','20130807','20140611'] new_data = [] for i in end_data: if int(i) >= int(20110406): print(True) new_data.append(i) else: print(False) print(new_data)
由于这些数据是字符串,放到程序中就报错了
整型不能和字符串比较,是不是需要先转换一下数据类型?
1、首先,你的end_data来源是DataFrame吗
2、其次,看你的判断条件,这些数据看着就是时间啊
是DataFrame,这个时间,但是字符串的形式。
我输出之后可以得到返回结果,但如何将结果为True的数据 筛选出来?
有上面的回答跑一下的错误提示。
问题都注销了。。。还这么多人回答
我是刚刚学也是第一次上这个平台,应该不是问题注销了,是我的帐户重复注册前一个账号被注销。应该不影响。
needTimes = data2['end_data'].where(data2['end_data'] > '20110406') # 就一个where函数啊
needTimes = data2['end_date'].where(data2['end_date'] > '20110406') # 我的锅,date写错了
# 可以使用 pd.date_range,满足你的需求 import pandas as pd df=pd.DataFrame({"end_data":end_data, "data":[1,2,3,4,5,6]}) print(df) is_true = df.apply(lambda x: True if len(pd.date_range("20110406", x["end_data"])) else False, axis=1) print(is_true) df[is_true]
这样子是跑出来了,但我有点绕晕了,这样的话我想要提取其中的某一个数据该怎么办?比如说‘20001231’?
已解决,谢谢qqzhuimengren!我如何向客服申请付款给你?
弱弱的说句,pd.date_range不是这么用滴
qqzhuimengren,你好!付款是自动付给你吗?我是第一次弄还搞不清楚
直接索引啊,needTimes[i] #i为索引值
还在平台那里,
在我的回答这里点击采纳就可以了
# 数据处理分析、数据挖掘相关 欢迎call我哦 print("qq 1467288927")
大佬,你是从事数据挖掘的吗
客服还在解决,可能要迟一点。
没事,记得帮忙采纳哦,亲
不是什么大佬,就是数据相关的小弟一枚【doge】
另外还想请教一下:datetime 2000-12-31 00:00:00 想转换成‘20001231’的字符串如何操作?
用框架和用数组不都是一样展现的么 挂个狗头.
datetime不是有包.这个转格式不是随便转的吗
import datetime a = '2018-10-03 00:55:00' b = datetime.datetime.strptime(a, '%Y-%m-%d %H:%M:%S').strftime('%Y%m%d') print(b)
老板为什么不采纳我233
他不也谁都没采纳吗...客服那边还没处理好吧...
是不是在我的提问那里进去?等好长时间没有反映
用filter函数使用,你这个需求用法应该是:
list(filter(你的数据转成列表,lambda a:int(a)>=20110406))
转成dataframe就可以了