gpt4 book ai didi

python - 无法对 Pandas DataFrame 进行排序

转载 作者:行者123 更新时间:2023-12-01 02:15:02 24 4
gpt4 key购买 nike

我正在尝试遵循这个例子:

以下格式的数据存储在 csv 文件中:

  Date       Open    High    Low   Close   Adj. close  Volume 
23/01/2018 1.00 3.00 2.00 2.10 2.15 1000

使用以下代码读取此数据:

self.symbol_data[s] = pd.io.parsers.read_csv( os.path.join(self.csv_dir,
’%s.csv’ % s),
header=0, index_col=0, parse_dates=True,
names=['datetime’, ’open’, ’high’, ’low’, ’close’, ’volume’, ’adj_close’]).sort()

只是为了检查 .sort() 按第一列中的值对框架进行排序是否正确?

我的问题是我使用的是不同版本的 Python 3.6 与他的 2.x 以及不同版本的 pandas 0.22.0 与(不确定,但它更旧),我还尝试从不同的版本访问数据具有不同格式的源。有一些额外的列,并且列的名称略有不同。

timestamp     open    high    low   close adjusted_close  Volume div_amt split
23/01/2018 1.00 3.00 2.00 2.10 2.15 1000 0 1

self.symbol_data[s] = pd.read_csv(os.path.join(self.csv_dir, '%s.csv' %s),
usecols=[0,1,2,3,4,5,6],
header=0, index_col=0, parse_dates=True,
names=['timestamp', 'open', 'high','low', 'close', 'adjusted_close',
'volume']).sort_values(by=['timestamp'])

上面的 pd.read_csv 调用能达到我想要的效果吗?

是否可以选择按名称读取的列?

我还可以检查名称=[]是否引用了 Pandas DateFrame 中的列?
我认为 python 帮助对此并不清楚:名称:要使用的列名称列表。
pandas 数据框的 csv 文件的哪些列以及用途是什么?

无论如何,目前我在排序部分遇到问题。sort_values(by='timestamp') 与上面的 sort() 等效吗?

我也收到此错误:

key 错误:“时间戳”

关于如何解决这个问题有什么建议吗?

最佳答案

您将第一列设置为索引 index_col=0,因此需要更改 sort_valuessort_index

它如何在0.17.0以下的一些非常旧的 pandas 版本中工作 - 检查 docs .

编辑:

Csv 具有 header col1col2。如果要替换列名称,请使用参数 nameheader=0:

temp=u"""col1,col2
1,2
4,8"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a', 'b'], header=0)
print (df)
a b
0 1 2
1 4 8

如果省略header=0,则会在前面添加新列名称:

temp=u"""col1,col2
1,2
4,8"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a', 'b'])
print (df)
a b
0 col1 col2
1 1 2
2 4 8

但是,如果没有 csv header 并使用 header=0,则第一个数据行 12 会丢失:

temp=u"""
1,2
4,8"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a', 'b'], header=0)
print (df)
a b
0 4 8

正确地只需要参数名称:

temp=u"""
1,2
4,8"""
#after testing replace 'pd.compat.StringIO(temp)' to 'filename.csv'
df = pd.read_csv(pd.compat.StringIO(temp), names=['a', 'b'])
print (df)
a b
0 1 2
1 4 8

关于python - 无法对 Pandas DataFrame 进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48424103/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com