将熊猫数据框架与英国日期格式相结合

时间:2018-06-08 08:33:10

标签: python pandas dataframe

我正在努力加入包含英国日期格式dd / mm / yyyy的csv文件中的熊猫数据框。

csv文件中包含的数据是:

-(void) parseTimeSignature {
    MusicTrack tempoTrack;
    MusicSequenceGetTempoTrack(_sequence, &tempoTrack);

    MusicEventIterator iterator;
    NewMusicEventIterator(tempoTrack, &iterator);

    Boolean hasNext = YES;
    MusicTimeStamp timestamp = 0;
    MusicEventType eventType = 0;
    const void *eventData = NULL;
    UInt32 eventDataSize = 0;

    MusicEventIteratorHasCurrentEvent(iterator, &hasNext);

    MIDIMetaEvent *midiMetaEvent = NULL;
    int val = 0;

    //loop through events in the tempo track
    while (hasNext) {
        MusicEventIteratorGetEventInfo(iterator, &timestamp, &eventType, &eventData, &eventDataSize);
        if (eventType == kMusicEventType_Meta) { //gets the time signature (see http:\//www.somascape.org/midi/tech/mfile.html for info)
            midiMetaEvent = (MIDIMetaEvent*)eventData;
            val = (int)midiMetaEvent->metaEventType;

            if (val == 88) { //this is the value present if the metaEventType is a time signature type
                [[NSUserDefaults standardUserDefaults] setInteger:(int)midiMetaEvent->data[0] forKey:@"timeSignatureNumerator"];
                [[NSUserDefaults standardUserDefaults] setInteger:(int)pow(2, (int)midiMetaEvent->data[1]) forKey:@"timeSignatureDenominator"]; //2 represents quarter notes, 3 reps 8th notes, etc
                //break;
            }
            else if (val == 89) {
                NSLog(@"found key signature!");
            }
            else if (val == 3) { //this value represents the track's instrument name
                NSLog(@"%hhu",midiMetaEvent->data[0]);
            }
        }

        MusicEventIteratorNextEvent(iterator);
        MusicEventIteratorHasCurrentEvent(iterator, &hasNext);
    }
}

我的问题是2016年11月1日对应于DataFrame的2016年11月1日对应的数据,相反,2016年11月1日的行中的数据将追加到2016年1月11日。

以下是我用于在日期范围内创建DataFrame并从临时数据框中连接数据的简单代码:

UK Date     Price
30/12/2015  120
31/12/2015  123
...         ... 
11/01/2016  135
12/01/2016  144

我不确定是否最好尝试将空白数据帧日期转换为英国格式或在我读取文件时更改格式?另外,更改格式的最佳方法是什么?

由于

1 个答案:

答案 0 :(得分:3)

我认为最好通过参数dayfirst转换为read_csv中的df = pd.read_csv("a.csv", index_col='UK Date', parse_dates = True, dayfirst=True, usecols = ['UK Date', 'Price'])

df['UK Date'] = pd.to_datetime(df['UK Date'], dayfirst=True)
#if need DatetimeIndex 
#df.index = pd.to_datetime(df.index, dayfirst=True)

to_datetime的其他解决方案:

df['UK Date'] = pd.to_datetime(df['UK Date'], format='%d/%m/%Y')
#if need DatetimeIndex 
#df.index = pd.to_datetime(df.index, format='%d/%m/%Y')

或者:

{{1}}