将python列表中的数据合并到一个datafram中

2024-04-19 09:38:16 发布

您现在位置:Python中文网/ 问答频道 /正文

我在AAMC_K.txt中有以下文件,AAU.txt文件, ACU.txt文件, ACY.txt文件在一个叫美国运通的文件夹里。我正在尝试将这些文本文件合并到一个数据帧中。我已经试过这样做了pd.合并()但是我得到一个错误,合并函数需要一个左右参数,并且我的数据在python列表中。如何将数据列表中的数据合并到一个数据帧中。你知道吗

import pandas as pd
import os

textfile_names = os.listdir("AMEX")
textfile_names.sort()
data_list = []

for i in range(len(textfile_names)):
   data = pd.read_csv("AMEX/"+textfile_names[i], index_col=None, header=0)
   data_list.append(data)

frame = pd.merge(data_list, on='<DTYYYYMMDD>', how='outer')

"AE.txt"
<TICKER>,<PER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
AE,D,19970102,000000,12.6250,12.6250,11.7500,11.7500,144,0
AE,D,19970103,000000,11.8750,12.1250,11.8750,12.1250,25,0

AAU.txt
<TICKER>,<PER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
AAU,D,20020513,000000,0.4220,0.4220,0.4220,0.4220,0,0
AAU,D,20020514,000000,0.4177,0.4177,0.4177,0.4177,0,0

ACU.txt
<TICKER>,<PER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
ACU,D,19970102,000000,5.2500,5.3750,5.1250,5.1250,52,0
ACU,D,19970103,000000,5.1250,5.2500,5.0625,5.2500,12,0

ACY.txt
<TICKER>,<PER>,<DTYYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
ACY,D,19980116,000000,9.7500,9.7500,8.8125,8.8125,289,0
ACY,D,19980120,000000,8.7500,8.7500,8.1250,8.1250,151,0

我想用DTYYYYMMDD对输出进行过滤,并将其放入一个数据帧中。你知道吗

OUTPUT
<TICKER>,<PER>,<DTYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>,<TICKER>,<PER>,<DTYYYMMDD>,<TIME>,<OPEN>,<HIGH>,<LOW>,<CLOSE>,<VOL>,<OPENINT>
ACU,D,19970102,000000,5.2500,5.3750,5.1250,5.1250,52,0,AE,D,19970102,000000,12.6250,12.6250,11.7500,11.7500,144,0
ACU,D,19970103,000000,5.1250,5.2500,5.0625,5.2500,12,0,AE,D,19970103,000000,11.8750,12.1250,11.8750,12.1250,25,0

Tags: 数据txtclosedatatimeopenlowticker
1条回答
网友
1楼 · 发布于 2024-04-19 09:38:16

正如@busybear所说,pd.concat是这个作业的正确工具:frame = pd.concat(data_list)。你知道吗

merge用于连接两个数据帧,这两个数据帧通常具有一些相同的列和一些不同的列。选择一个列(或索引或多个列)来标识两个数据帧中的哪些行彼此对应,并且pandas处理生成一个数据帧,该数据帧的行是两个原始数据帧中对应行的组合。这个函数一次只能在2个数据帧上工作;您必须执行一个循环来合并更多的数据帧(以这种方式合并许多数据帧是不常见的)。你知道吗

concat用于当您有多个数据帧并且只想将它们的所有行或列追加到一个大数据帧中时。(假设您在连接行,如您所愿。)它不使用标识符来确定哪些行对应。它所做的只是创建一个新的数据帧,其中包含每个concat数据帧中的每一行(第一个数据帧中的所有行,第二个数据帧中的所有行,等等)。你知道吗

我认为上面的TLDR对mergeconcat来说是一个不错的版本,但是请参见here以获得关于使用数据帧的merge/join/concat的冗长但更全面的指南。你知道吗

相关问题 更多 >