2017-03-24 2 views
2

파일에서 특정 한 줄을 추출하고 싶습니다. 많은 파일이있어 많은 행/값이 발생합니다. 팬더 데이터 프레임에 모든 값을 입력하고 싶습니다.팬더 시리즈에 값 추가

그 목적은 하나의 열 "11"(시리즈)에 "11"이라는 선을 넣고, 다음 열/시리즈 "22"에 "22"라는 선을, 시리즈 "22"에 "22" 마지막 열/Series.

목표는 :

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"

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

지금, 난 그냥 있습니다. 그러나 df [ "11"]가있는 부분은 더 이상 작동하지 않습니다. 루프에서 팬더 시리즈에 값을 어떻게 추가 할 수 있습니까?

답변

1

나는 작동하는 방법이 있습니다. 비슷한 일을하는 것에 대해 지금 당장은 찾을 수없는 또 다른 토론이있었습니다. 이것은 더 나은 대답 중 하나였습니다.

대신로 시작하는 dataframe을, 당신은 목록의 사전을 만들 수 있습니다 - 귀하의 경우 뭔가에

d = {"11": [],"22": [],"33":[]} 

처럼 당신이 뭔가 할 데이터를 추가 할 올 때 :

d["11"].append(line[15:40]) 

혹은

d["11"] += line[15:40] 

(내가 데이터 라인에있을 것입니다 무엇을 취소하고 있지 않다 - 그것의 경우 내가 가진 것 문자열을 사용하면 전체 목록을 분할하고 추가 할 생각?)

마지막으로 당신이 당신의 모든 목록은 같은 길이입니다 가정, 당신의 dataframe을 만들 수 있습니다 그것은 일

+0

df = pd.DataFrame(d)를 호출하여, 감사합니다 너무 많이 – Almizar

관련 문제