0
시간의 날짜/시간 표현과 변수 열을 포함하는 time
열이있는 두 개의 데이터 프레임이 있습니다. 이 두 데이터 프레임을 병합하고 싶지만 어떤 이유로이 형식은 nn
의 datetime 형식을 망칠 것입니다. 다음과 같이 dataframes은병합 후 DateTime 형식이 바뀝니다.
## ECG load
nn = pd.read_csv('D:\\path\\Nn.csv',delimiter=";",decimal=',',header=None,names=["time","ibi"])
fsEcg = 1024 # Sample frequency
tsEcg = mkdatMovis('2016-10-31T12:16:15.015') #datetime rep of Start time string
nn.loc[:,'time'] = nn.time/fsEcg # convert sample number to seconds
ecgTime = zip(tsEcg + datetime.timedelta(seconds=float(cmt)) for cmt in nn.time)
nn.loc[:,'time'] = ecgTime
## EDA load
eda = pd.read_csv('D:\\path\\eda.csv',\
delimiter=";",decimal=',',header=None,names=["eda"])
fsEda = 32
tsEda = mkdatMovis('2016-10-31T12:17:08.363')
cumEda = np.arange(len(eda),dtype=np.float64)/fsEda # create time array in seconds
cumEda = pd.Series(cumEda)
edadat = pd.DataFrame()
edadat.loc[:,'time'] = zip(tsEda + datetime.timedelta(seconds=float(cmt)) for cmt in cumEda)
edadat.loc[:,'eda'] = eda
:
내가 개별 dataframes을 만들려면이 코드를 사용
>>> nn
time nn
0 2016-10-31 12:16:26.409531 972.656250
1 2016-10-31 12:16:27.394883 985.351562
2 2016-10-31 12:16:28.379258 984.375000
3 2016-10-31 12:16:29.360703 981.445312
4 2016-10-31 12:16:30.407578 1046.875000
...
1448 2016-10-31 12:39:37.910508 845.703125
>>> edadat
time eda
0 (2016-10-31 12:17:08.363000,) 2.0
1 (2016-10-31 12:17:08.363000,) 5.0
2 (2016-10-31 12:17:08.363000,) 5.0
3 (2016-10-31 12:17:08.363000,) 4.0
4 (2016-10-31 12:17:08.363000,) 4.0
....
41582 (2016-10-31 12:38:47.363000,) 36.0
을 df = edadat.merge(nn,on="time",how="outer")
으로 dataframes을 병합 한 후, 데이터는 다음과 같습니다
time eda nn
0 (2016-10-31 12:17:08.363000,) 2.0 NaN
1 (2016-10-31 12:17:08.363000,) 5.0 NaN
2 (2016-10-31 12:17:08.363000,) 5.0 NaN
3 (2016-10-31 12:17:08.363000,) 4.0 NaN
4 (2016-10-31 12:17:08.363000,) 4.0 NaN
...
43027 1477917574356797000 NaN 928.710938
43028 1477917575276719000 NaN 919.921875
43029 1477917576178086000 NaN 901.367188
43030 1477917577064805000 NaN 886.718750
43031 1477917577910508000 NaN 845.703125
왜 datetime 병합 후 nn
유닉스로 변환 하시겠습니까? 시계열을 만들 때 정확히 같은 코드를 사용하지 않습니까?
고맙습니다. 그게 실제로 작동하는 것 같아요.하지만 지금 다른 변화를 만들어야합니다. 그런데 왜 'nn'의 시간 색인은 튜플이 없었습니까? 그리고'edadat '의 튜플이'nn' 시간 인덱스를 변경 한 이유는 무엇입니까? 그 유형 변환과 관련이 있습니까? 그리고 마지막 질문,'df.time = x'는'df.loc [:, "time"] = time'으로 대체되어야한다고 생각했습니다. 지금은 어떻게 올바른가? –
'time' 컬럼의'edadat'에는 튜플이 문제가 있다고 생각합니다. 왜냐하면 적어도 하나의 행이 두 개의 요소를 가진 튜플을 반환하기 때문입니다. – jezrael
당신은'print (edadat [edadat.time.str.len()> 1])' – jezrael