Python转置,列名在dataframe记录里面
Python transpose, column name are inside the dataframe records
我很确定我在这里遗漏了一些非常基本的东西,但我并没有真正在 pandas 文档中找到我要找的东西。
我下载了一个 ForEx 数据框,并想保存它,但在我这样做之前,我必须将它格式化为 8 columns/X 行,matrix/data-frame/vector(行数为需要)。我把它作为一行,每条记录旁边都有他的列名。 (我可以将其保存为 .CSV)
我在这里的力量是 .transpose,它本身并不能解决问题。
我已经成功了一次,但我似乎忘记保存代码了,那是一段时间前的事了……但多亏了这个,我可以给你看一个我读到的旧 csv python,并显示我想要如何格式化它。
(列名: Index(不是真正的列,它只是索引),close,date,high,low,open,close,qouteVolume,volume,weightedAvarage)
source_df = get_ForEx_data(**params)
list(source_df )
list(TransposedData)
TransposedData = source_df .transpose()
编辑:(从互联网获取数据的函数)
def get_poloinex_data(s, a, b, c):
import requests
from pandas import DataFrame
from io import StringIO
url = 'https://poloniex.com/public?command=returnChartData'
url += '¤cyPair=' + s #USDT a dollár
url += '&start=' + a
url += '&end=' + b
url += '&period=' + c
csv = requests.get(url)
if csv.ok:
return DataFrame.from_csv(StringIO(csv.text), sep=',') #Separátor itt!
else:
return None
我用这个得到的数据在python中是这样的:
Columns: [high:1.85, low:0.50000021, open:1.65, close:1.85, volume:144.42819254, quoteVolume:84.01638508, weightedAverage:1.71904792}, {"date":1439020800, high:1.7, low:1.40000001, open:1.7, close:1.40000001, volume:129.57577588, quoteVolume:92.52305316, weightedAverage:1.40047016}, {"date":1439035200, high:1.40000001, low:1.40000001.1, open:1.40000001, close:1.40000001.1, volume:0, quoteVolume:0, weightedAverage:1.40000001}, {"date":1439049600, high:1.40000001.1, low:1.40000001.2, open:1.40000001.1, close:1.40000001.2, volume:0.1, quoteVolume:0.1, weightedAverage:1.40000001}.1, {"date":....
我要找的是这样的:
close date high low open \
0 1.850000 2015-08-08 04:00:00 1.850000 0.500000 1.650000
1 1.400000 2015-08-08 08:00:00 1.700000 1.400000 1.700000
2 1.400000 2015-08-08 12:00:00 1.400000 1.400000 1.400000
3 1.400000 2015-08-08 16:00:00 1.400000 1.400000 1.400000
以此类推剩余的列
正如 Parfait 所说,您的数据是 JSON 格式,而不是 CSV。因此使用 pandas 的 read_json
函数而不是 from_csv
.
导入整个 pandas 模块:
import pandas as pd
将 JSON 数据转换为 DataFrame:
if csv.ok:
return pd.read_json(StringIO(csv.text))
else:
return None
这将 return 一个完全符合您所需格式的 DataFrame:
close date high low open quoteVolume
0 0.000073 2015-08-08 08:00:00 0.000073 0.000073 0.000073 0.000000
1 0.000073 2015-08-08 08:05:00 0.000073 0.000073 0.000073 0.000000
2 0.000073 2015-08-08 08:10:00 0.000073 0.000073 0.000073 0.000000
我很确定我在这里遗漏了一些非常基本的东西,但我并没有真正在 pandas 文档中找到我要找的东西。
我下载了一个 ForEx 数据框,并想保存它,但在我这样做之前,我必须将它格式化为 8 columns/X 行,matrix/data-frame/vector(行数为需要)。我把它作为一行,每条记录旁边都有他的列名。 (我可以将其保存为 .CSV)
我在这里的力量是 .transpose,它本身并不能解决问题。
我已经成功了一次,但我似乎忘记保存代码了,那是一段时间前的事了……但多亏了这个,我可以给你看一个我读到的旧 csv python,并显示我想要如何格式化它。
(列名: Index(不是真正的列,它只是索引),close,date,high,low,open,close,qouteVolume,volume,weightedAvarage)
source_df = get_ForEx_data(**params)
list(source_df )
list(TransposedData)
TransposedData = source_df .transpose()
编辑:(从互联网获取数据的函数)
def get_poloinex_data(s, a, b, c):
import requests
from pandas import DataFrame
from io import StringIO
url = 'https://poloniex.com/public?command=returnChartData'
url += '¤cyPair=' + s #USDT a dollár
url += '&start=' + a
url += '&end=' + b
url += '&period=' + c
csv = requests.get(url)
if csv.ok:
return DataFrame.from_csv(StringIO(csv.text), sep=',') #Separátor itt!
else:
return None
我用这个得到的数据在python中是这样的:
Columns: [high:1.85, low:0.50000021, open:1.65, close:1.85, volume:144.42819254, quoteVolume:84.01638508, weightedAverage:1.71904792}, {"date":1439020800, high:1.7, low:1.40000001, open:1.7, close:1.40000001, volume:129.57577588, quoteVolume:92.52305316, weightedAverage:1.40047016}, {"date":1439035200, high:1.40000001, low:1.40000001.1, open:1.40000001, close:1.40000001.1, volume:0, quoteVolume:0, weightedAverage:1.40000001}, {"date":1439049600, high:1.40000001.1, low:1.40000001.2, open:1.40000001.1, close:1.40000001.2, volume:0.1, quoteVolume:0.1, weightedAverage:1.40000001}.1, {"date":....
我要找的是这样的:
close date high low open \
0 1.850000 2015-08-08 04:00:00 1.850000 0.500000 1.650000
1 1.400000 2015-08-08 08:00:00 1.700000 1.400000 1.700000
2 1.400000 2015-08-08 12:00:00 1.400000 1.400000 1.400000
3 1.400000 2015-08-08 16:00:00 1.400000 1.400000 1.400000
以此类推剩余的列
正如 Parfait 所说,您的数据是 JSON 格式,而不是 CSV。因此使用 pandas 的 read_json
函数而不是 from_csv
.
导入整个 pandas 模块:
import pandas as pd
将 JSON 数据转换为 DataFrame:
if csv.ok:
return pd.read_json(StringIO(csv.text))
else:
return None
这将 return 一个完全符合您所需格式的 DataFrame:
close date high low open quoteVolume
0 0.000073 2015-08-08 08:00:00 0.000073 0.000073 0.000073 0.000000
1 0.000073 2015-08-08 08:05:00 0.000073 0.000073 0.000073 0.000000
2 0.000073 2015-08-08 08:10:00 0.000073 0.000073 0.000073 0.000000