Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/322.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 熊猫中的数据帧列转置_Python_Pandas - Fatal编程技术网

Python 熊猫中的数据帧列转置

Python 熊猫中的数据帧列转置,python,pandas,Python,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.830000000000

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

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
源文件中的第一列是列名,第二列是对应的列值


我尝试了pivot等,但未能成功。欢迎提供任何帮助。

我认为您在这里并不真正需要熊猫机械。你可以用手做换位:

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))

我不认为你真的需要这里的机器。你可以用手做换位:

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))
为了正常工作,您需要为每个记录添加一个唯一标识符,例如,如果原始数据中有一条记录的长度为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),那么使用

为了正常工作,您需要为每条记录添加一个唯一标识符,例如,如果原始数据中有一条记录的长度为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),那么使用

我无法理解您想要的输出。是否要先列出所有列名,然后列出所有列值(按列名排序)?是的,正确。我要在第一行中列出列名,然后在每行中列出数据值。请参阅我在qRow 1中提到的格式:开放、高、低等。。第2行:0.01等?像这样的?其中第2行的顺序取决于第1行的顺序?还有,问题是什么,您希望代码执行此操作还是具体执行什么操作?是正确是我希望对其进行编码。我希望将源文件输入并转换为其他格式,然后将其另存为文件。第2行和其他行的顺序应与第1行的顺序匹配。如果您还有其他问题,请告诉我。在输入数据中,第二列是否保证为整数?第一列保证是字符串吗?我很难理解您想要的输出。是否要先列出所有列名,然后列出所有列值(按列名排序)?是的,正确。我要在第一行中列出列名,然后在每行中列出数据值。请参阅我在qRow 1中提到的格式:开放、高、低等。。第2行:0.01等?像这样的?其中第2行的顺序取决于第1行的顺序?还有,问题是什么,您希望代码执行此操作还是具体执行什么操作?是正确是我希望对其进行编码。我希望将源文件输入并转换为其他格式,然后将其另存为文件。第2行和其他行的顺序应与第1行的顺序匹配。如果您还有其他问题,请告诉我。在输入数据中,第二列是否保证为整数?第一列是否保证为字符串?OP不想将2列转换为2行,而是转换为多行-在inputyes u r right中每10行开始一条新记录第一列包含列名第二列包含值。10的集合是重复的。是的,我可以手动完成,但此列表每天都会更新。我想使用它生成报告,除非列数发生变化,否则我看不出有任何问题。此外,此方法不会在内存中加载整个数据集(一次只加载一行),因此,这是完全可伸缩的。OP不希望将2列转换为2行,而是转换为多行-在inputyes u r right第一列包含列名第二列包含值中每10行开始一条新记录。10的集合是重复的。是的,我可以手动完成,但此列表每天都会更新。我想使用它生成报告除非列数发生变化,否则我看不出有任何问题。此外,此方法不会在内存中加载整个数据集(一次只加载一行),因此这是完全可扩展的。我非常喜欢您的解决方案,它很好,而且非常简洁。#df=pd.read#csv(r'D:\\Files\\abc.txt',header=None,names=[“key”,“value”])#df[“index”]=[i//10代表范围内的i(len(df))]#df.pivot(“index”,“key”,“value”)#df.to#.to#csv(r'D:\\Files\\abc.csv',=',“sep=”)@Aprillion我没有收到任何错误消息,因为它没有生成所需的文件。它增加了一个列与排名,没有其他。文件保持不变。我已经在之前的评论中发布了我的代码。我不知道如何在注释中输入代码,键,值,索引0,打开,2.9300000000000002,01,高,2.970000000000002,02,低,2.8300000000000001,03,关闭,2.8999999999999999,04,卷,631100,05,调整关闭,2.8999999999999999,06,SMA_20,3.22149999999999999999999998,07,SMA_50,3.076799999999999999969,08,U交易日期,2016-02-05:00,打开,代码10,0,0,6.990000000000002,1 11,高,7.099999999996,1 12,低,6.900000000000004,1 13,收盘,6.900000000000004,1 14,成交量,4300,1 15,调整收盘,6.900000000000004,1 16,SMAU 20,7.170999999999994,1 17,SMAU 50,7.33820000000000005,1 18,交易日期,2016-02-05 00:00,1 19,代码,ONT,1@Aprillion我把在我之前的评论中生成的文件放进去了。我确实喜欢你的解决方案,它很好而且非常简单。#df=pd.read#csv(r'D:\\Files\\abc.txt',header=None,names=[“key”,“value”])#df[“index”]=[i//10代表范围内的i(len(df))]#df.pivot(“index”,“key”,“value”)#df.to#.csv(r'D:\\Files\\abc.csv','sep=”)@Aprillion我没有收到任何错误消息,因为它没有生成所需的文件。它增加了一个列与排名,没有其他。文件保持不变。我已经在之前的评论中发布了我的代码。我不知道如何在注释中输入代码,键,值,索引0,打开,2.9300000000000002,01,高,2.970000000000002,02,低,2.8300000000000001,03,关闭,2.8999999999999999,04,卷,631100,05,调整关闭,2.8999999999999999,06,SMA_20,3.22149999999999999999999998,07,SMA_50,3.076799999999999999969,08,U交易日期,2016-02-05:00,打开,代码10,0,0,6.990000000000002,11,高,7.099999999996,12,低,6.900000000000004,1 13,收盘,6.900000000000004,1 14,成交量,4300,1 15,调整收盘,6.900000000000004,1 16,SMAU 20,7.170999999999994,1 17,SMAU 50,7.33820000000000005,1