繁体   English   中英

数据框列在熊猫中转置

[英]Dataframe column transpose in pandas

我在源文件中有以下格式的数据

Open,0.001
High,0.001
Low,0.001
Close,0.001
Volume,0
Adj Close,0.001
SMA_20,0.0010000000000000005
SMA_50,0.0010000000000000007
date_of_trade,2016-02-05 00:00:00
code,AFT
Open,2.9300000000000002
High,2.9700000000000002
Low,2.8300000000000001
Close,2.8999999999999999
Volume,631100
Adj Close,2.8999999999999999
SMA_20,3.2214999999999998
SMA_50,3.0767999999999969
date_of_trade,2016-02-05 00:00:00
code,1PG
Open,6.9900000000000002
High,7.0999999999999996
Low,6.9000000000000004
Close,6.9000000000000004
Volume,4300

我想转换成以下格式

open,high,low,close,volume,adj_close,sma_20,sma_50,data_of_trade,code
.001,.001,.001,0,.001,.0001000005,.0000100007,2016-02-05 00:00:00,aft
2.93,2.97,.......................................................,1pg

源文件中的第一列是列名,第二列是对应的列值。

我尝试了枢轴等,但无法正常工作。欢迎任何帮助。

为了使透视图正常工作,您需要为每个记录添加一个唯一的标识符,例如,如果原始数据中有1条记录长10行,则将行号除以10的整数即可:

df = pd.read_csv(data, header=None, names=["key", "value"])
df["index"] = [i // 10 for i in range(len(df))]
df = df.pivot("index", "key", "value")

FTR:如果您的记录超过数十亿条(> RAM的可用GB),请使用http://pandas.pydata.org/pandas-docs/stable/io.html#io-chunking

我认为您这里真的不需要熊猫机器。 您可以手动进行移调:

from csv import DictWriter
from toolz import partition

cols = 'Open', 'High', 'Low', 'Close', 'Volume', 'Adj Close', 'SMA_20', 'SMA_50', 'date_of_trade', 'code'

with open('old.csv') as old, open('new.csv', 'w') as new:
    writer = DictWriter(new, cols)
    writer.writeheader()

    for lines in partition(len(cols), old):
        writer.writerow(dict(l.strip().split(',') for l in lines))

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM