如何遍历Pandas的数据帧
我有一个数据帧“数字”,像这样:
Date group Number
0 2013-02-01 group1 -0.098765
1 2013-02-02 group2 0.519878
2 2013-02-03 group1 -0.098765
3 2013-02-04 group3 1.960784
4 2013-02-05 group3 2.859412
5 2013-02-06 group2 1.960784
6 2013-02-07 group1 -0.696594
以及另一个数据框“datelist”中的日期列表,如下所示:
^{pr2}$我试图返回一个新的数据框,其中包含“numbers”中的每个记录,其中日期是<;=datelist['date']
我试过了:
for date in datelist:
end = datelist['Date']
numbers2 = numbers[numbers.Date <= end]
但是for循环返回一个与原始数据帧“numbers”相同的数据帧。在
Date group Number
0 2013-02-01 group1 -0.098765
1 2013-02-02 group2 0.519878
2 2013-02-03 group1 -0.098765
3 2013-02-04 group3 1.960784
4 2013-02-05 group3 2.859412
5 2013-02-06 group2 1.960784
6 2013-02-07 group1 -0.696594
如果我像这样手动输入一系列日期,我可以正确地生成所需的数据帧:
end = pandas.datetime(2013,2,26)
numbers2 = numbers[numbers.Date <= end]
我不会通过详细说明这个过程的其余部分来使事情复杂化——基本上,我是在“numbers2”数据帧上逐个“group”执行Groupby,并在继续下一个日期之前将计算附加到另一个数据帧上。在
有人能给我指点正确的方法吗?在
我不能百分之百地确定我理解您想要什么,但是我认为您想要为
datelist
中的每个日期创建一个子数据帧(取自number
数据帧)。所以在你的例子中,你想要创建7个数据帧?在如果是这样,我会这样做:
首先将}列转换为
number
(我称之为df)中的date
列和{datetime64
列。我假设numbers
中的日期列已经是datetime64
类型:在}中的所有日期,并且我让
^{pr2}$datelist
中,我将创建一个datetime64
类型的新列(注意,我更改了datelist中的日期,因此number
数据帧中的所有dates
都小于{datelist
具有更少的观察值以减小输出的大小):现在,我只循环datelist的行,并在
date <= end
的行中创建一个新的数据帧:我连接了数据帧,但您可以通过在“end”上执行groupby来处理它们。在
首先,我认为datelist包含元组或类似的内容,而不是日期。 在确保datelist包含datetime对象之后,您可能需要用第二个dataframe中的相应datetime过滤第一个dataframe的每条记录。两个都一样大。在
你觉得怎么样,对你有用吗?在
相关问题 更多 >
编程相关推荐