Python 如果数据未排序,则无法将数据框与日期索引拼接 问题

Python 如果数据未排序,则无法将数据框与日期索引拼接 问题,python,pandas,dataframe,Python,Pandas,Dataframe,无法根据日期索引拼接数据。我想获得有关“2020-07-20”的数据 该脚本首先读取output.csv,然后创建DataFrame并放置列“BidClose”,最后打印出数据的特定日期范围AskClose,但现在失败了 解决方案 为了将数据拼接为数据[start:end]格式(其中start,end是日期范围),必须首先对数据进行排序。 data.sort\u indexinplace=True 作为pd进口熊猫 将numpy作为np导入 导入时间 数据文件='output.csv' data

无法根据日期索引拼接数据。我想获得有关“2020-07-20”的数据 该脚本首先读取output.csv,然后创建DataFrame并放置列“BidClose”,最后打印出数据的特定日期范围AskClose,但现在失败了

解决方案 为了将数据拼接为数据[start:end]格式(其中start,end是日期范围),必须首先对数据进行排序。 data.sort\u indexinplace=True

作为pd进口熊猫 将numpy作为np导入 导入时间 数据文件='output.csv' data=pd.read\u csvdatafile,index\u col='Date' 选择列 关闭=数据['BidClose'] askClose=data['askClose'] 将索引中的日期字符串转换为日期时间格式: close.index=pd.to_datetimeclose.index askClose.index=pd.to_datetimeaskClose.index priceSma_df=pd.DataFrame{ “BidClose”:close, “AskClose”:AskClose }
printpriceSma_df['2020-07-20':'2020-07-20']['AskClose']您没有使用列日期。 这应该起作用:

expected_df= (priceSma_df['Date'] >= '2020-07-20') & (priceSma_df['Date'] <= '2020-07-20')

您没有使用“日期”列。 这应该起作用:

expected_df= (priceSma_df['Date'] >= '2020-07-20') & (priceSma_df['Date'] <= '2020-07-20')

下面是一个如何从csv读取数据的工作示例

import pandas as pd
import numpy as np

datafile = 'tmp.csv'
data = pd.read_csv(datafile, index_col = 'Date', parse_dates=True)
data.sort_index(inplace=True) # Sort to ensure that date values are in order
                              # Slices won't work without sorted index

# Demonstrate slicing and column accessing
print(data['2020-07-20':'2020-07-20'])
print(data['2020-07-20':'2020-07-20']["BidOpen"])
print(data['2020-07-20':'2020-07-20']["AskClose"])
print(data['2020-07-20':'2020-07-20'][["BidOpen", "AskClose"]])

您可以使用DataFrame删除不需要的列。使用DataFrame[[col1,col2]]删除或选择需要的列到新的DataFrame。复制下面是一个如何从csv读取数据的工作示例

import pandas as pd
import numpy as np

datafile = 'tmp.csv'
data = pd.read_csv(datafile, index_col = 'Date', parse_dates=True)
data.sort_index(inplace=True) # Sort to ensure that date values are in order
                              # Slices won't work without sorted index

# Demonstrate slicing and column accessing
print(data['2020-07-20':'2020-07-20'])
print(data['2020-07-20':'2020-07-20']["BidOpen"])
print(data['2020-07-20':'2020-07-20']["AskClose"])
print(data['2020-07-20':'2020-07-20'][["BidOpen", "AskClose"]])

您可以使用DataFrame删除不需要的列。使用DataFrame[[col1,col2]]删除或选择需要的列到新的DataFrame。复制

当然可以,在这种情况下,我可以从priceSma_df['2020-07':'2020-07'获取新的DataFrame吗?我想在保留所有列的情况下获得该数据帧的子集,当然,在这种情况下,我可以从priceSma_df['2020-07':'2020-07'获得新的数据帧吗?我想在保留所有列的情况下获得该数据帧的子集,要添加到最后一位,您还可以在使用read_csv…读取文件时指定所需的列,usecols=[Date,BidOpen,BidClose]我对这个问题做了一些改进,我想使用Date范围获得AskClose。如您所见,数据中有许多列。我希望类似这样的东西能够在priceSma_df['2020-07-20':'2020-07-20']['AskClose']中起作用,这样我就可以很容易地在该日期范围内得到不同的列。编辑后的答案中倒数第二行符合您的要求。我编辑了我的答案,以使用方括号语法访问该列,因为这样做更安全、更好。属性样式.AskClose不是访问列的推荐方法,这只是我在检查数据集时的一个坏习惯。当我运行printdata['2020':'2020']时,它会显示空数据框,不确定在使用示例数据集运行代码时会出现什么错误,我会得到期望的结果。printdata['2020':'2020']提供日期匹配的所有行。您是否仔细检查了数据集是否有日期匹配的行。printdata是否返回任何内容?要添加到最后一位,您还可以在使用read_csv…读取文件时指定所需的列,usecols=[Date,BidOpen,BidClose]我对这个问题做了一些改进,我想使用Date范围获得AskClose。如您所见,数据中有许多列。我希望类似这样的东西能够在priceSma_df['2020-07-20':'2020-07-20']['AskClose']中起作用,这样我就可以很容易地在该日期范围内得到不同的列。编辑后的答案中倒数第二行符合您的要求。我编辑了我的答案,以使用方括号语法访问该列,因为这样做更安全、更好。属性样式.AskClose不是访问列的推荐方法,这只是我在检查数据集时的一个坏习惯。当我运行printdata['2020':'2020']时,它会显示空数据框,不确定在使用示例数据集运行代码时会出现什么错误,我会得到期望的结果。printdata['2020':'2020']提供日期匹配的所有行。您是否仔细检查了数据集是否有日期匹配的行。printdata是否返回任何内容?