Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/http/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python concat两个数据帧,带关节轴_Python_Pandas - Fatal编程技术网

Python concat两个数据帧,带关节轴

Python concat两个数据帧,带关节轴,python,pandas,Python,Pandas,我以为这会很简单,但我不能让它工作。。。 我有两个数据帧: 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 我只希望

我以为这会很简单,但我不能让它工作。。。 我有两个数据帧:

    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

您可以使用
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
>>> 

您使用的
pd.concat
应该会产生预期的输出,并且在我的测试中有效。尝试以下操作以确保两个数据帧的索引对齐,然后重新运行
concat
行,或使用
join

fpeaklocs.reset_index(drop=True, inplace=True)
fpeakvals.reset_index(drop=True, inplace=True)
在此之后,以下任一项都应起作用:

pd.concat([fpeaklocs, fpeakvals], axis=1)

如果仍然不起作用,请尝试以下方法:

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)
这两个数据段的索引结果如下:

fpeaklocs.index
Out[250]: Index(['0', '1', '2', '3', '4'], dtype='object')

fpeakvals.index
Out[251]: RangeIndex(start=0, stop=5, step=1)
所以问题来自fpeaklocs,在重置索引()之后:


谢谢大家!

您想要的是“join”而不是concat.fpeaklocs.join(fpeaklocs)显示我的上一个代码的0到4行…列“A”仍然为空。它显示空的数据帧列:[Hz,A]索引:[]您是如何创建数据帧对象的
fpeaklocs
fpeaklocs
。这可能会给我们一些提示,说明为什么它不适合您我不确定我是否完全理解生成fpeaklocs和fpeakvals的代码。。。我刚刚更新了更多的观察结果。。。。如果有机会建议一些方法来检查这两个数据帧?我不明白为什么dataframe可以执行不同的操作。哇,reset_index()使它工作。非常感谢。如果你能告诉我什么时候有必要的话。似乎不清楚为什么某些(或我的)数据帧需要重置_index()@Simon,我唯一的猜测是一个或两个数据帧的
索引不包含整数,不管它们显示为什么。为了解决这个问题,您可以比较
fpeaklocs.index
fpeaklocs.index
的输出。可能其中一个索引包含浮点数或字符串。您的猜测是正确的。fpeaklocs的索引是字符串。我已经根据您的回复为其他人更新了更多发现。我应该更新函数以生成这两个数据帧。非常感谢。@Simon,很高兴听到这个消息!
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(drop=True, inplace=True)

fpeaklocs.index
Out[254]: RangeIndex(start=0, stop=5, step=1)