Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.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 不同指数的熊猫壳_Python_Pandas_Dataframe_Concat - Fatal编程技术网

Python 不同指数的熊猫壳

Python 不同指数的熊猫壳,python,pandas,dataframe,concat,Python,Pandas,Dataframe,Concat,我有三个数据帧要连接,但它们都有不同的索引。这三个指数的长度都相同。我的第一个df如下所示: Index Time_start Time_end duration value 0 5 10 5 1.0 1 10 16 6 NaN ... 39 50 53 3

我有三个数据帧要连接,但它们都有不同的索引。这三个指数的长度都相同。我的第一个df如下所示:

Index    Time_start    Time_end    duration    value
0        5             10          5           1.0
1        10            16          6           NaN
...
39       50            53          3           NaN
Index    Time_start    Time_end    duration    value
40        5             10         5           2.0
42        10            16         6           NaN
...
79        50            53         3           NaN
第二个df如下所示:

Index    Time_start    Time_end    duration    value
0        5             10          5           1.0
1        10            16          6           NaN
...
39       50            53          3           NaN
Index    Time_start    Time_end    duration    value
40        5             10         5           2.0
42        10            16         6           NaN
...
79        50            53         3           NaN
第三个看起来完全一样,但是索引=[80..119] 但时间的开始、结束和持续时间是完全相同的。价值不同

我想连接value列,使其看起来像这样

Index    Time_start    Time_end    duration    value1    value2 value3
1        5             10          5           1.0       2      3
2        10            16          6           NaN       NaN    NaN
...
39       50            53          3           NaN       NaN    NaN
到目前为止我试过这个

pd.concat([df1, df2.value, ms3.value], axis=1, join_axes = [df1.index])
但是指数是不一样的,所以它不起作用。我知道我可以先试试看

df2.reset_index(drop=True)
然后做concat,这很有效,但我相信有更好的方法。

使用:

dfs = [df1, df2]
cols = ['Time_start', 'Time_end', 'duration']
keys = ['value1', 'value2']
pd.concat(
    [df.set_index(cols).value for df in dfs],
    axis=1, keys=keys)

                              value1  value2
Time_start Time_end duration                
5          10       5            1.0     2.0
10         16       6            NaN     NaN
50         53       3            NaN     NaN
另一个解决方案:

dfs = [df1,df2]
df = pd.concat([x.set_index(['Time_start','Time_end','duration']) for x in dfs],axis=1)
df.columns = [x + str(i+1) for i, x in enumerate(df.columns)]
print (df)
                              value1  value2
Time_start Time_end duration                
5          10       5            1.0     2.0
10         16       6            NaN     NaN
50         53       3            NaN     NaN