fpeaklocs
Out[203]:
Hz
0 6
1 15
2 21
3 28
4 11
fpeakvals
Out[204]:
A
0 -0.000426
1 0.000362
2 0.000420
3 0.000377
4 0.000420
我只想要它:
Hz A
0 6.0 -0.000426
1 15.0 0.000362
2 21.0 0.000420
3 28.0 0.000377
4 11.0 0.000420
但是,当我尝试以下内容时,它给了我这个:
pd.concat([fpeaklocs, fpeakvals], axis=1)
Out[201]:
Hz A
0 6.0 NaN
1 15.0 NaN
2 21.0 NaN
3 28.0 NaN
4 11.0 NaN
0 NaN -0.000426
1 NaN 0.000362
2 NaN 0.000420
3 NaN 0.000377
4 NaN 0.000420
知道如何实现我的目标吗?
还有更多观察结果:
pd.DataFrame({'Hz':fpeaklocs, 'A':fpeakvals}, index=fpeakvals.index)
ValueError: Shape of passed values is (2, 1), indices imply (2, 5)
fpeaklocs.join(fpeakvals)
Out[246]:
Hz A
0 6 NaN
1 15 NaN
2 21 NaN
3 28 NaN
4 11 NaN
答案 0 :(得分:0)
您可以使用pd.merge
>>> import pandas as pd
>>> fpeakvals = pd.DataFrame.from_dict({'A': [-0.000426, 0.000362, 0.000420, 0.000377, 0.000420]})
>>> fpeaklocs = pd.DataFrame.from_dict({'Hz': [6, 15, 21, 28, 11]})
>>>
>>> pd.merge(fpeaklocs, fpeakvals, left_index=True, right_index=True)
Hz A
0 6 -0.000426
1 15 0.000362
2 21 0.000420
3 28 0.000377
4 11 0.000420
>>>
答案 1 :(得分:0)
您对pd.concat
的使用应该会产生您的预期输出,并且它可以在我的测试中使用。请尝试以下操作以确保两个DataFrame的索引排成一行,然后重新运行concat
行,或使用join
:
fpeaklocs.reset_index(drop=True, inplace=True)
fpeakvals.reset_index(drop=True, inplace=True)
之后,以下任何一种都应该起作用:
pd.concat([fpeaklocs, fpeakvals], axis=1)
或
fpeaklocs.join(fpeakvals)
如果仍然不起作用,请尝试:
pd.DataFrame({'Hz':fpeaklocs.values.flatten(), 'A':fpeakvals.values.flatten()})
感谢彼得的建议,合并终于有效了:
fpeaklocs.reset_index(drop=True, inplace=True)
fpeakvals.reset_index(drop=True, inplace=True)
pd.concat([fpeaklocs, fpeakvals], axis=1)
这两个datadrame的.index结果是这样的:
fpeaklocs.index
Out[250]: Index(['0', '1', '2', '3', '4'], dtype='object')
fpeakvals.index
Out[251]: RangeIndex(start=0, stop=5, step=1)
所以问题来自fpeaklocs,并且在reset_index()之后:
fpeaklocs.reset_index(drop=True, inplace=True)
fpeaklocs.index
Out[254]: RangeIndex(start=0, stop=5, step=1)
谢谢大家!