2017-03-20 14 views
2

Excelファイルを解析しようとしています。私はデータフレーム内のファイルを持っており、ヘッダー行が値に基づいているようにしたい(この場合、ヘッダーはセル== 'Hour'で始まる)パンダ - 条件に基づく最初と最後の行

さらに、データフレームを行BEFOREセル== 'すべての固定期間'。各Excelファイルの終了時刻の値が変わるため、セル== '12:00 PM 'の場所は使用できません。

これは私のデータフレームは、次のようになります。私が来ている最も近いです

[['6:00 AM',11.56], 
['7:00 AM',142.36], 
['8:00 AM',153.54], 
['9:00 AM',200.34], 
['10:00 AM',240.33], 
['11:00 AM',110.12], 
['12:00 PM',114.11],], 
columns=['Hour','Net Sales']) 

Hour Net Sales 
1 6:00 AM  11.56 
2 6:00 AM  150.34 
3 7:00 AM  142.36 
4 8:00 AM  153.54 
5 9:00 AM  200.34 
6 10:00 AM 240.33 
7 11:00 AM 110.12 
8 12:00 PM 114.11 

df.columns = df.iloc[5] 
df = df[6:] 

これで唯一の問題は、ということであるに

df1 = pd.DataFrame(
[['Business Dates','3/15/2017'], 
['Locations','ABC Location'], 
['Breakfast',5073.35], 
['Lunch',1489.45], 
['PM',129.93], 
['Hour','Net Sales'], 
['6:00 AM',11.56], 
['7:00 AM',142.36], 
['8:00 AM',153.54], 
['9:00 AM',200.34], 
['10:00 AM',240.33], 
['11:00 AM',110.12], 
['12:00 PM',114.11], 
['All Fixed Periods',]], 
columns=['Service Performance Summary','Sales']) 

df1 

Service Performance Summary Sales 
0 Business Dates 3/15/2017 
1 Locations ABC Location 
2 Breakfast 5073.35 
3 Lunch  1489.45 
4 PM Break 129.93 
5 Hour Net Sales 
6 6:00 AM  11.56 
7 6:00 AM  150.34 
8 7:00 AM  142.36 
9 8:00 AM  153.54 
10 9:00 AM  200.34 
11 10:00 AM 240.33 
12 11:00 AM 110.12 
13 12:00 PM 114.11 
14 All Fixed Periods None 

「時間」は、異なるレポートで異なるインデックスから開始される場合があります。

答えて

2

私は最初の位置

vals = df1.values 
col1 = vals[:, 0] 
header_start = np.where(col1 == 'Hour')[0][0] 
eodf = np.where(col1 == 'All Fixed Periods')[0][0] 

pd.DataFrame(vals[header_start + 1:eodf], columns=vals[header_start]) 

     Hour Net Sales 
0 6:00 AM  11.56 
1 7:00 AM 142.36 
2 8:00 AM 153.54 
3 9:00 AM 200.34 
4 10:00 AM 240.33 
5 11:00 AM 110.12 
6 12:00 PM 114.11 

を見つけるためにnp.whereを使用したいにもありがとう、素晴らしいですそれargmax

vals = df1.values 
col1 = vals[:, 0] 
header_start = (col1 == 'Hour').argmax() 
eodf = (col1 == 'All Fixed Periods').argmax() 

pd.DataFrame(vals[header_start + 1:eodf], columns=vals[header_start]) 
+0

を使用することができます! –

+0

@WaltReedようこそ。お役に立てて嬉しいです。 – piRSquared

関連する問題