我有两个CSV文件,每个文件都有浮点数的第一列时间值。在第二个csv文件中有一些值丢失并被延迟。我需要从第二个csv写入第三个csv文件值,但是从第一个csv写入相应的索引。
更新
时间以秒为单位。为了以一定的精度匹配右行,我们可以使用变量diff = 0.3s。
first.csv
T1[s]
1.2
2.2
3.2
4.2
5.2
6.2
second.csv
T2[s]
2.31
3.31
4.31
third.csv
T1[s]|T2[s]
---------
1.2 |
2.2 | 2.31
3.2 | 3.31
4.2 | 4.31
5.2 |
6.2 |
代码
import numpy as np
import pandas as pd
fileName1 = "first.csv"
fileName2 = "second.csv"
df1 = pd.read_csv(fileName1)
df2 = pd.read_csv(fileName2)
t1List = df1['T1']
t2List = df2['T2']
for t2 in t2List:
isIn = np.isclose(t1List, t2, atol=0.3).any
print(isIn)
答案 0 :(得分:0)
根据您提供的其他信息,您可以更轻松地提示:
import pandas as pd
max_tol = 0.3
df1 = pd.DataFrame.from_dict({"T1": [1.2, 2.2, 3.2, 4.2, 5.2, 6.2]})
df2 = pd.DataFrame.from_dict({"T2": [2.31, 3.31, 4.31]})
for value in df2['T2'].values:
df1.loc[df1[abs(df1.T1 - value) < max_tol].index, 'T2'] = value
print(df1)
这会给你:
T1 T2
0 1.2 NaN
1 2.2 2.31
2 3.2 3.31
3 4.2 4.31
4 5.2 NaN
5 6.2 NaN
然后,您可以使用df1.to_csv("filename.csv")
将其保存到csv。