Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/339.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 - Fatal编程技术网

Python 我怎样才能同时提取和填充?

Python 我怎样才能同时提取和填充?,python,pandas,Python,Pandas,假设我有三个数据帧: from pandas import DataFrame df1 = DataFrame([ [1], [3], [4] ], index=[1, 3, 4], columns=['value1'] ) df2 = DataFrame([ [5], [6], [7], ], index=[5, 6, 7], columns=['value2'] ) df3 = DataFrame([

假设我有三个数据帧:

from pandas import DataFrame

df1 = DataFrame([
    [1],
    [3],
    [4]
],
    index=[1, 3, 4],
    columns=['value1']
)

df2 = DataFrame([
    [5],
    [6],
    [7],
],
    index=[5, 6, 7],
    columns=['value2']
)

df3 = DataFrame([
    [5, 9],
    [6, 10],
    [7, 11],
    [8, 12]
],
    index=[5, 6, 7, 8],
    columns=['value1', 'value2']
)
使用

现在给我

   value1  value2  value1  value2
1     1.0     NaN     NaN     NaN
3     3.0     NaN     NaN     NaN
4     4.0     NaN     NaN     NaN
5     NaN     5.0     5.0     9.0
6     NaN     6.0     6.0    10.0
7     NaN     7.0     7.0    11.0
8     NaN     NaN     8.0    12.0
现在,我怎样才能得到结果呢

   value1  value2
1     1.0     NaN
3     3.0     NaN
4     4.0     NaN
5     5.0     5.0
6     5.0     6.0
7     7.0     7.0
8     8.0     12.0
换句话说,对于相同名称的列,如何“向左”合并它们?我正在寻找一种通用解决方案,它可以接受任意数量的同名多列(也可以具有只出现一次的列名)。

使用:

使用
数据帧列表
更通用的解决方案是:


伟大的必须添加
DataFrame()
作为初始值(减少
的第三个参数)。
   value1  value2
1     1.0     NaN
3     3.0     NaN
4     4.0     NaN
5     5.0     5.0
6     5.0     6.0
7     7.0     7.0
8     8.0     12.0
df = df1.combine_first(df2).combine_first(df3)
print (df)
   value1  value2
1     1.0     NaN
3     3.0     NaN
4     4.0     NaN
5     5.0     5.0
6     6.0     6.0
7     7.0     7.0
8     8.0    12.0
from functools import reduce

dfs = [df1, df2, df3]
df = reduce(lambda l,r: pd.DataFrame.combine_first(l,r), dfs)