【发布时间】:2020-04-13 01:44:41
【问题描述】:
我知道这是一个简单的问题,但我被困了很长一段时间。
我有两个DataFrame,它们有一千个操作系统行,但这里有一个示例:
df1 =
Name Value Date
x 0.04 2014-01-02
x 0.03 2014-01-03
x 0.02 2014-01_05
x 0.02 2014-01-07
(...) (...) (...)
y 0.002 2014-01-01
y 0.001 2014-01-02
y 0.003 2014-01-03
y 0.004 2014-01-07
(...) (...) (...)
z 0.003 2014-01-02
z 0.003 2014-01-05
z 0.004 2014-01-07
(...) (...) (...)
还有一个Dataframe:
df2 =
Name Value Date
x 0.04 2015-01-02
x 0.03 2015-01-03
x 0.02 2015-01_05
x 0.02 2015-01-07
(...) (...) (...)
y 0.002 2015-01-01
y 0.001 2015-01-02
y 0.003 2015-01-03
y 0.004 2015-01-07
(...) (...) (...)
z 0.003 2015-01-02
z 0.003 2015-01-05
z 0.004 2015-01-07
(...) (...) (...)
我想要什么:
df3=
Name Value Date
x 0.04 2014-01-02
x 0.03 2014-01-03
x 0.02 2014-01_05
x 0.02 2014-01-07
x 0.04 2015-01-02
x 0.03 2015-01-03
x 0.02 2015-01_05
x 0.02 2015-01-07
(...) (...) (...)
y 0.002 2014-01-01
y 0.001 2014-01-02
y 0.003 2014-01-03
y 0.004 2014-01-07
y 0.002 2015-01-01
y 0.001 2015-01-02
y 0.003 2015-01-03
y 0.004 2015-01-07
(...) (...) (...)
z 0.003 2014-01-02
z 0.003 2014-01-05
z 0.004 2014-01-07
z 0.003 2015-01-02
z 0.003 2015-01-05
z 0.004 2015-01-07
(...) (...) (...)
1) 当我合并时,如果 "name" 不存在于 2014 年的数据中,我希望它不存在于我的 df3 中,并且与我的 2015 年的数据相同。
换句话说,我只想要在我的Dataframes 中都具有价值的"Name"。
我尝试了什么:
a= df1.merge(df2,how="inner")
还有
frames= [df1,df2]
df3= pd.concat([frames],axis=1)
但是我得到的输出:
df3 =
Value_x Date_y Name Value_y Date_y
0.03 2014-01-02 x 0.04 2015-01-02
0.02 2014-01-05 x 0.03 2015-01-03
0.03 2014-01-06 x 0.02 2015-01_05
0.03 2014-01-07 x 0.02 2015-01-07
(...) (...) (...) (...) (...)
0.02 2014-01-03 y 0.002 2015-01-01
0.01 2014-01-07 y 0.001 2015-01-02
0.02 2014-01-06 y 0.003 2015-01-03
00.2 2014-01-07 y 0.004 2015-01-07
(...) (...) (...) (...) (...)
0.03 2014-01-02 z 0.003 2015-01-02
0.01 2014-01-04 z 0.003 2015-01-05
0.03 2014-01-05 z 0.004 2015-01-07
(...) (...) (...) (...) (...)
【问题讨论】:
-
你应该在 pd.concat 中使用 axis = 0 吗?