python编程求助

我的需求是,需要用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就可以了