Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/24.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_Excel_Pandas_Merge - Fatal编程技术网

Python 如何合并两个数据帧,其中一列是另一个数据帧中所有列的名称?

Python 如何合并两个数据帧,其中一列是另一个数据帧中所有列的名称?,python,excel,pandas,merge,Python,Excel,Pandas,Merge,所以问题很简单,我有两个数据帧,一个看起来像这样(第一个df) 然后我有另一个看起来像这样的数据帧(第二个df) 我的想法是我希望最终结果是 Date name info x y 1/2/2007 a 3 s 20 1/2/2007 b 34 m 5 1/3/2007 a 23 s 21 1/4/2007 a 21 m 23 1/5/2007 b

所以问题很简单,我有两个数据帧,一个看起来像这样(第一个df)

然后我有另一个看起来像这样的数据帧(第二个df)

我的想法是我希望最终结果是

Date       name  info    x     y
1/2/2007    a   3        s    20
1/2/2007    b   34       m     5
1/3/2007    a   23       s    21
1/4/2007    a   21       m    23
1/5/2007    b   31       s     2
1/6/2007    a   35.3     m    20.5
1/6/2007    b   39.6     s     7
1/6/2007    c   43.9     m     8
1/7/2007    a   48.2     s    20.4
1/8/2007    b   52.5     m     5.6
1/9/2007    a   56.8     s    20.2
1/9/2007    c   61.1     m     10
1/10/2007   a   65.4     s    20.1
1/11/2007   a   69.7     m     20
1/12/2007   b   74       s     6.4
1/13/2007   b   78.3     m     6.6
1/14/2007   a   82.6     s    19.7
1/14/2007   b   86.9     m     6.8
1/14/2007   c   91.2     s     15
1/14/2007   d   95.5     m     20

有什么简单的方法可以做到这一点吗?因为我拥有的数据帧看起来第二个df要大得多,第一个df要长得多,我不想做一个超大的合并,因为我唯一的想法是合并,包括第二个df中的每个名字,这将是永恒的。如果有人能帮我的话,那就太好了。这个想法是使用pandas在python中实现的,但是如果现在有人知道怎么做,我也可以在excel中实现。如果您只想插入列a,谢谢

pd.merge(df, df2[['a']], how='inner', right_index=True, left_index=True)
或者可以合并所有列并删除列

pd.merge(df, df2, how='inner', right_index=True, left_index=True).drop(['b','c','d'],1]

所以我刚试过你的代码,但是,你正在进行的合并,适用于只有四列的dat框架,而我的案例可能有一百多列,所以逐个键入它们的名称是没有效率的。
pd.merge(df, df2[['a']], how='inner', right_index=True, left_index=True)
pd.merge(df, df2, how='inner', right_index=True, left_index=True).drop(['b','c','d'],1]