我有以下数据框:
0 Symbol DataDiscriminator Open
1 AKAM Summary -
2 AKAM Lot 2017-05-12, 16:20:00
3 APA Summary -
4 APA Lot 2017-03-31, 16:20:00
5 APA Lot 2017-03-24, 16:20:00
我想用下一行的日期设置DataDiscriminator =“ Summary”的Open元素的值,然后删除DataDiscriminator =“ Lot”行以获得:
0 Symbol DataDiscriminator Open
1 AKAM Summary 2017-05-12
3 APA Summary 2017-03-31
...
当前的工作逻辑是:
for i, row in s.iterrows():
if s.DataDiscriminator[i] == "Summary":
o = s.Open[i+1] # Get the next row's Open data
s = s.set_value(i, "Open", o[0:10]) # Slice out the time in the new Open data
s = s[s.DataDiscriminator == "Summary"] # Keep only the Summary rows in the dataset
有没有更好的矢量化方法来实现这一目标?
最佳答案
Shift是执行此操作的标准矢量化方法:
>>> df.loc[ df.DataDiscriminator=='Summary','Open'] = df.Open.shift(-1)
>>> df = df[ df.DataDiscriminator=='Summary' ]
Symbol DataDiscriminator Open
0 AKAM Summary 2017-05-12, 16:20:00
2 APA Summary 2017-03-31, 16:20:00
关于python - 用下一行替换数据框元素数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44737540/