在Python中,如何构造一个允许我读取txt文件(以制表符分隔)并将每1000行存储为自己的数据帧的循环?
下面是我的数据示例,有十行标题,然后正好有1000行数据,然后重复30个周期(这些是实验室实验的试验)。我有8个相同格式的文件,我想提取每个批,这样我就可以做一些事情。如何创建一个循环,每次创建一个新的数据帧来存储新行在Python中,如何构造一个允许我读取txt文件(以制表符分隔)并将每1000行存储为自己的数据帧的循环?,python,pandas,Python,Pandas,下面是我的数据示例,有十行标题,然后正好有1000行数据,然后重复30个周期(这些是实验室实验的试验)。我有8个相同格式的文件,我想提取每个批,这样我就可以做一些事情。如何创建一个循环,每次创建一个新的数据帧来存储新行 Channels 1 Samples 1000 Date 2020/02/12 Time 10:11:36.6395705499426038443 Y_Unit_Label Volts X_Dimension Time
Channels 1
Samples 1000
Date 2020/02/12
Time 10:11:36.6395705499426038443
Y_Unit_Label Volts
X_Dimension Time
X0 0.0000000000000000E+0
Delta_X 0.001000
***End_of_Header***
X_Value Voltage Comment
0.000000 4.930675 4.96V\0A69.0 cm\0A6.9 degrees
0.001000 4.934949
0.002000 4.931990
0.003000 4.923443
我试图做一些类似下面代码的事情,但我不知道如何让pandas为每个迭代创建一个新的数据帧
collection=['Rawdata01.txt','Rawdata02.txt','Rawdata03.txt']
result = pd.DataFrame()
for i in collection:
j=0
mydf = pd.read_csv(i,sep='\t',header=(0),index_col=False)
for row in mydf.iterrows():
result = csv[1000*j + 10*(j+1):1000*(j+1) + 10*(j+1)] # how to get it to make newdataframes
print(result.head())
j=j+1
我已经非常接近了,但我一直在思考如何为每个批次或一个大批次获取单独的数据帧。在这一点上,两者都将起作用。在这件事上的任何帮助都将不胜感激
在这一行之后:
mydf = pd.read_csv(i,sep='\t',header=(0),index_col=False)
您已经在单个数据帧中具有以制表符分隔的数据。要将其分成1000行,可以尝试以下方法:
sub_frames = [mydf.iloc[startrow:startrow+1000] for startrow in range(0, len(mydf), 1000)]
然后有一个数据帧列表,每个数据帧有1000行(最后一行除外)。数据帧的
iloc
是从更大的数据帧中提取行。您看过中的chunk\u size
参数了吗?我认为这正是您想要的,只是效率更高。我不认为您应该将整个文件读入数据帧,您需要先清理数据。