我正在努力加入包含英国日期格式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, ×tamp, &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
我不确定是否最好尝试将空白数据帧日期转换为英国格式或在我读取文件时更改格式?另外,更改格式的最佳方法是什么?
由于
答案 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}}