Merging/Concat/Joining 两个数据帧
Merging/Concat/Joining two dataframes
我有一个 pandas 数据框,其代码标识符如下所述:
df1 = pd.DataFrame([['a', 1], ['b', 2],['c', 3],['d', 4],['e', 5],['f', 5]],
columns=['code', 'value1'])
第二个数据帧具有以下内容
df2 = pd.DataFrame([['a', 11], ['b', 12],['c', 13],['d', 14],['e', 15],['f', 16],['g', 17], ['h', 2],['i', 3],['j', 4],['k', 5],['l', 5]],
columns=['code', 'value2'])
我只想查看 df1 中标识的代码(即 a-f),并且第三列名为 value2。
我试过了
df1 = df1.join(df2, on = 'Code')
但我一直得到 NaN 的值
我查看了几个地方并看到了合并、连接和连接,但其中 none 似乎有效
使用:
>>> df1.merge(df2, how='inner', on='code')
code value1 value2
0 a 1 11
1 b 2 12
2 c 3 13
3 d 4 14
4 e 5 15
5 f 5 16
或者您的意思是 how='outer'
和 merge
?
>>> df1.merge(df2, how='outer', on='code')
code value1 value2
0 a 1.0 11
1 b 2.0 12
2 c 3.0 13
3 d 4.0 14
4 e 5.0 15
5 f 5.0 16
6 g NaN 17
7 h NaN 2
8 i NaN 3
9 j NaN 4
10 k NaN 5
11 l NaN 5
>>>
要仅查看 df1 中标识的代码(即 a-f)并拥有名为 value2 的第三列,您应该使用 merge
方法以及 how='inner'
和 on='code
:
>>> df1.merge(df2, how='inner', on='code')
code value1 value2
0 a 1 11
1 b 2 12
2 c 3 13
3 d 4 14
4 e 5 15
5 f 5 16
试试这个:
df1 = df1.merge(df2, on = 'code')
因为您将列命名为 'code' 而不是 'Code'
我有一个 pandas 数据框,其代码标识符如下所述:
df1 = pd.DataFrame([['a', 1], ['b', 2],['c', 3],['d', 4],['e', 5],['f', 5]],
columns=['code', 'value1'])
第二个数据帧具有以下内容
df2 = pd.DataFrame([['a', 11], ['b', 12],['c', 13],['d', 14],['e', 15],['f', 16],['g', 17], ['h', 2],['i', 3],['j', 4],['k', 5],['l', 5]],
columns=['code', 'value2'])
我只想查看 df1 中标识的代码(即 a-f),并且第三列名为 value2。
我试过了
df1 = df1.join(df2, on = 'Code')
但我一直得到 NaN 的值
我查看了几个地方并看到了合并、连接和连接,但其中 none 似乎有效
使用:
>>> df1.merge(df2, how='inner', on='code')
code value1 value2
0 a 1 11
1 b 2 12
2 c 3 13
3 d 4 14
4 e 5 15
5 f 5 16
或者您的意思是 how='outer'
和 merge
?
>>> df1.merge(df2, how='outer', on='code')
code value1 value2
0 a 1.0 11
1 b 2.0 12
2 c 3.0 13
3 d 4.0 14
4 e 5.0 15
5 f 5.0 16
6 g NaN 17
7 h NaN 2
8 i NaN 3
9 j NaN 4
10 k NaN 5
11 l NaN 5
>>>
要仅查看 df1 中标识的代码(即 a-f)并拥有名为 value2 的第三列,您应该使用 merge
方法以及 how='inner'
和 on='code
:
>>> df1.merge(df2, how='inner', on='code')
code value1 value2
0 a 1 11
1 b 2 12
2 c 3 13
3 d 4 14
4 e 5 15
5 f 5 16
试试这个:
df1 = df1.merge(df2, on = 'code')
因为您将列命名为 'code' 而不是 'Code'