![](/img/trans.png)
[英]pandas dataFrame with datetime64[ns] as Index with microsecond precision
[英]How to merge a list containing data and datetime64[ns] with a pandas dataframe with datetime64[ns] index
我想從dataframe
data
讀取兩列S1_max和S2_max。 無論S1_max列中存在什么值,我都想檢查每個S1_max
是否由相應的S2_max
信號接替。 如果是這樣,我計算了S1_max
和S2_max
信號之間的時間增量。 這個結果然后在索引datetime[64ns]
在一個單獨的S2_max列的索引dict
d
,然后將其附加到一個list
delta_data
。 如何在對應的datetime[64ns]
索引處將此結果添加到我已經存在的data
數據datetime[64ns]
?
這是我創建的delta_data
:
#time between each S2 global maxima: 86 ns/samp freq 200 = 0.43 ns
#Checking that each S1 is succeeded by a corresponging S2 signal and calculating the time delta:
delta_data = []
diff_S1 = 0
diff_S2 = 0
i = 0
while((i + diff_S1 + 1 < len(peak_indexes_S1)) and (i + diff_S2<len(peak_indexes_S2))):
# Find next ppg peak after S1 peak
while (df["S2"].index[peak_indexes_S2[i + diff_S2]] < df["S1"].index[peak_indexes_S1[i+diff_S1]]):
diff_S2=diff_S2+1
while (df["S1"].index[peak_indexes_S1[i+diff_S1+1]] < df["S2"].index[peak_indexes_S2[i + diff_S2]]):
diff_S1=diff_S1+1
i_peak_S2 = peak_indexes_S2[i + diff_S2]
i_peak_S1 = peak_indexes_S1[i + diff_S1]
d={}
d["td"] = (df["S2"].index[i_peak_S2]-df["S1"].index[i_peak_S1]).microseconds
d["time"] = df["S2"].index[i_peak_S2]
PATdata.append(d)
i = i + 1
time_delta=pd.DataFrame(delta_data)
delta_data
打印出來:
td time
0 355000 2019-08-07 13:06:31.010
1 355000 2019-08-07 13:06:31.850
2 355000 2019-08-07 13:06:32.695
這是我的data
框:
l1 l2 l3 l4 S1 S2 S2_max S1_max
2019-08-07 13:11:21.485 0.572720 0.353433 0.701320 1.418840 4.939690 2.858326 2.858326 NaN
2019-08-07 13:11:21.490 0.572807 0.353526 0.701593 1.419052 4.939804 2.854604 NaN 4.939804
該數據框的創建者:
data = pd.read_csv('file.txt')
data.columns = ['l1','l2','l3','l4','S1','S2']
nbrMeasurments = sum(1 for line in open('file.txt'))
data.index = pd.date_range('2019-08-07 13:06:30'), periods=nbrMeasurments-1, freq="5L")
我已經嘗試過DataFrame.combine_first
和append
。
另外,嘗試向data
添加另一個數據幀時,也會發生相同的問題。 此數據幀在日期時間幀中沒有ms:
S3 S4
Date
2019-08-07 13:06:30 111 61
據我了解,您正在嘗試將另一列追加到現有的DataFrame中。
這里是怎么做的:
df1 = pd.DataFrame({'names':['bla', 'blah', 'blahh'], 'values':[1,2,3]})
df2_to_concat = pd.DataFrame({'put_me_as_a_new_column':['row1', 'row2', 'row3']})
pd.concat([df1.reset_index(drop=True), df2_to_concat.reset_index(drop=True)], axis=1)
reset_index(drop=True)
確保您不會產生NaN或重復的索引列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.