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

Python 组合两个数据帧的行

Python 组合两个数据帧的行,python,pandas,dataframe,merge,Python,Pandas,Dataframe,Merge,我一直在到处找,但找不到帮助 假设我有两个数据帧,如下所示 我想合并这两个数据帧以产生以下结果 请记住,df2始终是df的子集。 换句话说,df2中的每个值将保证出现在df的值中 这是我到目前为止所拥有的 但结果有点令人失望。 任何帮助都将不胜感激。我想你需要的是一个pd.concat后面跟着一个.drop\u duplicates() 或者您可以使用更新。设置索引后,只需使用新值更新df1中的值: df1 = df1.set_index('Values') df1 = df1.update(d

我一直在到处找,但找不到帮助

假设我有两个数据帧,如下所示 我想合并这两个数据帧以产生以下结果 请记住,
df2
始终是
df
的子集。
换句话说,
df2
中的每个值将保证出现在
df
值中

这是我到目前为止所拥有的 但结果有点令人失望。

任何帮助都将不胜感激。

我想你需要的是一个
pd.concat
后面跟着一个
.drop\u duplicates()


或者您可以使用
更新
。设置索引后,只需使用新值更新df1中的值:

df1 = df1.set_index('Values')
df1 = df1.update(df2.set_index('Values')).reset_index()
你应该:

  • 将df中的索引设置为值并保存结果 在临时数据帧中
  • 使用df2更新它,索引也设置为值 (更新在适当位置执行)
  • 重置索引以将值转换为常规列
  • 可能会将此结果保存回df下
执行此操作的代码是:

wrk = df.set_index('Values')
wrk.update(df2.set_index('Values'))
df = wrk.reset_index()
结果是:

    Values  Count  Percentage
0    Apple   14.0        0.74
1   Banana    0.0        0.00
2  Samsung    5.0        0.26
3   Orange    0.0        0.00

这回答了你的问题吗?
result = df.merge(df2, on='Values', how='left')
>>> result

    Values  Count_x  Percentage_x  Count_y  Percentage_y
0    Apple        0             0     14.0          0.74
1   Banana        0             0      NaN           NaN
2  Samsung        0             0      5.0          0.26
3   Orange        0             0      NaN           NaN
>>> df1
    Values  Count  Percentage
0    Apple      0           0
1   Banana      0           0
2  Samsung      0           0
3   Orange      0           0
>>> df2
    Values  Count  Percentage
0    Apple     14        0.74
1  Samsung      5        0.26
>>> pd.concat([df1, df2]).drop_duplicates(subset='Values', keep='last')
    Values  Count  Percentage
1   Banana      0        0.00
3   Orange      0        0.00
0    Apple     14        0.74
1  Samsung      5        0.26
df1 = df1.set_index('Values')
df1 = df1.update(df2.set_index('Values')).reset_index()
wrk = df.set_index('Values')
wrk.update(df2.set_index('Values'))
df = wrk.reset_index()
    Values  Count  Percentage
0    Apple   14.0        0.74
1   Banana    0.0        0.00
2  Samsung    5.0        0.26
3   Orange    0.0        0.00