我希望能够获得一个CSV文件的集合,这些文件彼此共享一个共同的索引和时间t
,我希望使用一个名为mergedf()
的函数将它们合并在一起。在我看来,它就像它的工作,除了它打印了3次相同的值集。根据我的if
语句,它似乎在打印filepath[0]
3次。此外,它也可以是intdf
函数中的prepdf()
。你知道吗
如果你能帮我发现我的错误那就太棒了。你知道吗
输入:
def prepdf(path, mi, ma):
csv = pd.read_csv(path, usecols=[0,1], skiprows=1, names = ['t','b'])
df = DataFrame(csv)
fs = 2
T = 1/fs
ts = np.arange(mi, ma, T)
interpdata = {}
for key in ['b']:
spl = interpolate.interp1d(df['t'], df[key])
interpdata[key] = spl(ts)
interpframe = pd.DataFrame(interpdata, index=ts)
interpframe.index.name = 'ts'
interpframe.reset_index(inplace=True)
interpframe['t'] = interpframe['ts']
temp = interpframe.loc[interpframe['b'] > 0.5, 't']
interpframe.loc[interpframe['b'] > 0.5, 't'] = temp
interpframe['t'] = interpframe['t'].fillna(method='ffill')
interpframe.set_index('t', inplace=True)
inttmp = interp_frame
intdf = interp_frame.head(n=len(inttmp))
return intdf
PATHS = ['data1.csv', 'data2.csv', 'data3.csv']
filepath = [file for file in PATHS]
for path in PATHS:
df = prepdf(path, 650, 1000)
print(df)
print(len(PATHS))
def mergedf(n):
if len(PATHS)-1-n == 0:
return prepdf(filepath[0], 650, 1000)
else:
return pd.merge(prepdf(filepath[len(PATHS)-1-n], 650, 1000), mergedf(n+1), left_on='t', right_on='t')
mergedf(0)
输出(mergedf(0)):
t b b_x b_y
0 650.0 0.105299 0.105299 0.105299
1 650.5 0.193072 0.193072 0.193072
2 651.0 0.115404 0.115404 0.115404
3 651.5 0.047509 0.047509 0.047509
4 652.0 0.119501 0.119501 0.119501
5 652.5 -0.187888 -0.187888 -0.187888
... ... ... ... ...
695 997.5 0.165262 0.165262 0.165262
696 998.0 -0.131729 -0.131729 -0.131729
697 998.5 0.038266 0.038266 0.038266
698 999.0 0.093568 0.093568 0.093568
699 999.5 0.022013 0.022013 0.022013
700 rows × 4 columns
以下是CSV数据帧的示例:
t b
0 650.0 0.105299
1 650.5 0.193072
2 651.0 0.115404
3 651.5 0.047509
4 652.0 0.119501
5 652.5 -0.187888
... ...
IIUC公司:
更新:
我猜显示同一数据集三次的问题是由以下几行引起的:
interp_frame
-未在函数中定义。它很可能是在Python环境(iPython、Jupyter等)中定义的相关问题 更多 >
编程相关推荐