Python 如何有效地从列表列表中创建数据帧?
这似乎是一个奇怪的问题,但我遇到了一个问题,我想让多个csv文件连接多个测量点,每个测量点都有多(7)个数据条目 在第一点上,我在每个文件上循环并连接了一个空数据帧,但由于熊猫为每个连接创建新对象的方式,这会带来性能问题。我发现最好先创建一个列表来收集所有数据,然后再创建一个数据帧 但这就产生了一个问题,即创建了一个列表列表,而熊猫似乎没有正确处理这个问题 守则:Python 如何有效地从列表列表中创建数据帧?,python,pandas,dataframe,csv,multi-index,Python,Pandas,Dataframe,Csv,Multi Index,这似乎是一个奇怪的问题,但我遇到了一个问题,我想让多个csv文件连接多个测量点,每个测量点都有多(7)个数据条目 在第一点上,我在每个文件上循环并连接了一个空数据帧,但由于熊猫为每个连接创建新对象的方式,这会带来性能问题。我发现最好先创建一个列表来收集所有数据,然后再创建一个数据帧 但这就产生了一个问题,即创建了一个列表列表,而熊猫似乎没有正确处理这个问题 守则: import os import pandas as pd import zipfile import clevercsv as c
import os
import pandas as pd
import zipfile
import clevercsv as csv
from pprint import pprint
def try_number(s):
try:
if "." in s:
return float(s)
return int(s, 10)
except ValueError:
return s
def read_umafall(fp):
header_lines = []
metadata = {}
data = []
for line in fp:
line = line.strip()
if line.startswith("%"):
if ": " in line:
key, _, value = line[1:].partition(": ")
metadata[key.strip()] = value
else:
header_lines.append(line)
elif ";" in line:
data.append([try_number(c) for c in line.split(";")])
elif line:
print("???", line)
return {
"header_lines": header_lines,
"metadata": metadata,
"data": data,
}
csv_list = []
directory = r"C:\Users\20191678\OneDrive - TU Eindhoven\Engineering Design"
for filename in os.listdir(directory):
if '.csv' in filename:
with open(filename) as fp:
indiv_csv = read_umafall(fp)
csv_list.append(indiv_csv["data"])
df = pd.DataFrame(csv_list[0], columns = ["Timestamp", "Sample No.", "X-Axis", "Y-Axis", "Z-Axis", "Sensor Type", "Sensor ID"])
df
当我只给熊猫一个文件时,输出是正确的:
但在为实例2提供更多文件时,我得到了以下输出(其中数据帧与列表作为值进行了转换):
如何解决这个问题,为每个文件获取一个具有多索引的数据帧(或实际情况下的实验测试)