とりあえずデータは
Python
1 df = pd . read_table ( "socre.txt" ,
2 names = [ "ID" , "Date" , "Name" , "A" , "B" , "C" , "D" , "E" ] ,
3 sep = '\s+|,'
4 engine = 'python' )
のように セパレータに "space "と"comma " の2つを指定すると読めるのではないでしょうか。
このDataFrameに行毎の19990214や19991215を“Date”に入れたいのですが
これは少し面倒ですね・・
とりあえず、サンプルを書いてみました(余分な処理も入れてありますので少し長くなりましたが・・)ので参考にしてみてください
Python
1 import pandas as pd
2 import io
3
4 data = """
5 0,19990214
6 1,1001 Tom 30 59 20 41 59
7 2,1002 Judy 40 50 31 53 60
8 0,19991215
9 1,1001 Tom 45 69 30 21 69
10 2,1002 Judy 50 20 71 43 70
11 """
12
13 df = pd . read_table (
14 io . StringIO ( data ) ,
15 names = [ "ID" , "Date" , "Name" , "A" , "B" , "C" , "D" , "E" ] ,
16 sep = '\s+|,' ,
17 engine = 'python' )
18
19 # IDが"0"である行を区切りにGroupIDを振る
20 df [ 'GroupID' ] = ( df . ID == 0 ) . cumsum ( )
21 # GroupIDをDateに変換するためのテーブルを作成
22 conv = df . loc [ df . ID == 0 , [ 'GroupID' , 'Date' ] ] . set_index ( 'GroupID' ) . iloc [ : , 0 ]
23 # 各GroupIDからDateを生成して Date列に代入
24 df [ 'Date' ] = df . GroupID . map ( conv )
25 # Date列をDatetime型に変換
26 df [ 'Date' ] = pd . to_datetime ( df . Date . astype ( str ) )
27 # 余分なデータを削除
28 df = df . drop ( df [ df . ID == 0 ] . index )
29 df = df . drop ( columns = [ 'GroupID' ] )
30 # Indexを振りなおす
31 df = df . reset_index ( drop = True )
32 # これでまともなDataFrameになったはず
33 print ( df )
34 #0 1 1999-02-14 Tom 30.0 59.0 20.0 41.0 59.0
35 #1 2 1999-02-14 Judy 40.0 50.0 31.0 53.0 60.0
36 #2 1 1999-12-15 Tom 45.0 69.0 30.0 21.0 69.0
37 #3 2 1999-12-15 Judy 50.0 20.0 71.0 43.0 70.0
38
39 # 後は'Tom'を取り出す
40 print ( df [ df . Name == 'Tom' ] )
41 # ID Date Name A B C D E
42 #0 1 1999-02-14 Tom 30.0 59.0 20.0 41.0 59.0
43 #2 1 1999-12-15 Tom 45.0 69.0 30.0 21.0 69.0
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/07/27 08:54
2018/07/27 08:55
2018/07/27 08:55
2018/07/29 14:38