我想从文件中提取特定的一行。 有许多文件,导致许多行/值。 我想将所有值都放入Pandas DataFrame中。
为此,我们的目标是将#34; 11"分成一列" 11" (系列),名为" 22"进入下一栏/系列" 22"以及" 33"进入最后一栏/系列。
目的:
11 22 33
file1 0.4 4.1 6.2
file2 0.5 4.3 6.1
file3 0.6 4.6 6.1
file4 0.8 4.1 6.7
... ... ... ...
现在,我只有:
import os
cwd=os.getcwd()
import pandas as pd
columns=["11","22","33"]
df=pd.DataFrame(columns=columns)
filenames=[]
for files in os.listdir(cwd):
if files.startswith("file"):
os.chdir(files)
cwd2=os.getcwd()
filenames.append(files)
for files2 in os.listdir(cwd2):
if files2.startswith("Ausgab"):
os.chdir(files2)
o=open("yoyo.txt","r")
i=0
for line in o:
i=i+1
if i==1:
df["11"].append(line[15:40])
if i==2:
df["22"].append(line[15:40])
if i==3:
df["33"].append(line[15:40])
os.chdir(cwd1)
df=pd.DataFrame(columns=columns,index=filenames)
df.to_csv("ttttest.csv")
文件列表确实有效,因此列" 11"," 22"," 33"。 但是df [" 11"]附加的部分不起作用。 如何从循环中向Pandas系列添加值?
答案 0 :(得分:1)
我有办法。还有另一个讨论,我现在无法找到类似的东西,这是一个更好的答案。
而不是创建一个数据框,你可以创建一个列表字典 - 在你的情况下像
d = {"11": [],"22": [],"33":[]}
当您追加数据时,您会执行以下操作:
d["11"].append(line[15:40])
或者
d["11"] += line[15:40]
(我不清楚你的数据会排成一行 - 如果它是一个字符串,我以为你想把它拆分然后添加整个列表?)
最后,您可以制作数据框,假设您的所有列表都是相同的长度,只需拨打df = pd.DataFrame(d)