2017-08-20 1 views
0

Ich bin neu in Python. Ich habe zwei Datensätze wie unten gezeigt.Finden Sie das gleiche Datum aus zwei Datensätzen

Set 1:

Gmt time,Open,High,Low,Close,Volume,RSI,,Change,Gain,Loss,Avg Gain,Avg Loss,RS 
15.06.2017 00:00:00.000,0.75892,0.76313,0.7568,0.75858,107799.5406,0,,,,,,, 
16.06.2017 00:00:00.000,0.75857,0.76294,0.75759,0.76202,94367.4299,0,,0.00344,0.00344,0,,, 
18.06.2017 00:00:00.000,0.76202,0.76236,0.76152,0.76188,5926.0998,0,,-0.00014,0,0.00014,,, 
19.06.2017 00:00:00.000,0.76189,0.76289,0.75848,0.75902,87514.849,0,,-0.00286,0,0.00286,,, 
... 

Set 2:

Gmt time,Open,High,Low,Close,Volume 
15.06.2017 00:00:00.000,0.75892,0.75933,0.75859,0.75883,4777.4702 
15.06.2017 01:00:00.000,0.75885,0.76313,0.75833,0.76207,7452.5601 
15.06.2017 02:00:00.000,0.76207,0.76214,0.76106,0.76143,4798.4102 
15.06.2017 03:00:00.000,0.76147,0.76166,0.76015,0.76154,4961.4502 
15.06.2017 04:00:00.000,0.76154,0.76162,0.76104,0.76121,2977.6399 
15.06.2017 05:00:00.000,0.7612,0.76154,0.76101,0.76151,3105.4399 
... 

Ich möchte mich diese versuchte, mit Set 1.en Linien in Set 2 im gleichen Datum zu finden: print(daily['Gmt time'][0].date == hourly['Gmt time'][0].date), aber ich don‘ Ich weiß, warum es falsch war. Gibt es keine Möglichkeit, das Datum (nur Datum, ohne Zeit) von zwei Datensätzen zu vergleichen?

+0

Last sowohl der Datensatz pandas Datenrahmen. Ändern Sie das Datumsformat der Spalte in das Datum. Vergleichen Sie für die Gleichheit –

+0

@Vikash Singh Danke, aber muss ich Dataframe verwenden, um das zu lösen? Und warum kam der Vergleich falsch? –

+0

versuchen Sie es mit diesem 'print (daily ['Gmt time'] [0] .date, stündlich ['Gmt time'] [0] .date)' dies wird verdeutlichen, warum der Vergleich falsch ausfiel. –

Antwort

0

zuerst die Datensätze in Datenrahmen lesen:

import pandas as pd 
df_one = pd.DataFrame.from_csv('data_set_one.csv', index_col=False) 
df_two = pd.DataFrame.from_csv('data_set_two.csv', index_col=False) 

konvertieren Datumsspalte bisher

df_one['Gmt date'] = pd.to_datetime(df_one['Gmt time']).dt.date 
df_two['Gmt date'] = pd.to_datetime(df_two['Gmt time']).dt.date 

jetzt vergleichen sowohl die Datenrahmen:

for i, row in df_one.iterrows(): 
    df_one_date = row['Gmt date'] 
    print('df_one_date', df_one_date) 
    print(df_two[df_two['Gmt date'] == df_one_date]) 
    print('----') 

es ist immer noch unklar, wie Sie wollen für unterschiedliche Daten von df_one zu behandeln, um df_two zu entsprechen. Hoffe, das gibt Ihnen genug Idee, wie man damit umgeht.

+0

Vielen Dank. Es ist sehr hilfreich. –

+0

Sie sind herzlich willkommen :) –

0

Da die Verwendung von Iterrows langsam sein kann, ist die Verwendung von Merge eine bessere Option.

import pandas as pd 

# load data 
df_one = pd.read_csv('data_set_one.csv', index_col=False) 
df_two = pd.read_csv('data_set_two.csv', index_col=False) 

# convert times to datetime and then strip off the time to leave the date 
df_one['Gmt date'] = pd.to_datetime(df_one['Gmt time']).dt.date 
df_two['Gmt date'] = pd.to_datetime(df_two['Gmt time']).dt.date 

# merge 
# selecting only the date in each dataframe for clarity 
df_merge = df_two[['Gmt date']].merge(df_one[['Gmt date']], on=['Gmt date'], how='inner', right_index=True) 

# get list of indices from df_two where dates exist in both frames 
ix = list(df_two.index.unique()) 
print ix 

[0, 1, 2, 3, 4, 5]

+0

Vielen Dank! Ich werde es später ausprobieren: D –

Verwandte Themen