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

Python 比较来自不同数据帧的两个列值

Python 比较来自不同数据帧的两个列值,python,pandas,jupyter-notebook,Python,Pandas,Jupyter Notebook,我有两个数据帧,我已经阅读了熊猫。两者都包含一个日期列和一个股票列,我想知道这两列中的对应值是否匹配。如果它们匹配,我想用unique_值中相应的体积和价格值更新test_版本 我正在使用Python和Jupyter笔记本 # unique_values Index Stock Date Volume Price Score 0 1 ASO 1 4650600.0 31.139999 0.5719 272

我有两个数据帧,我已经阅读了熊猫。两者都包含一个日期列和一个股票列,我想知道这两列中的对应值是否匹配。如果它们匹配,我想用unique_值中相应的体积和价格值更新test_版本

我正在使用Python和Jupyter笔记本

# unique_values
       Index Stock  Date      Volume       Price   Score
0          1   ASO     1   4650600.0   31.139999  0.5719
272      273   GME     1   6218300.0  184.500000  0.9995
403      404   AMC     1  44067000.0   10.200000  0.9995
435      436  TSLA     1  28271800.0  691.619995  0.9686
509      510   AMD     1  29327900.0   81.440002  0.9686
...      ...   ...   ...         ...         ...     ...
11185  11186  AAPL    15  94812300.0  133.110001 -0.9399
11292  11293  BABA    15  12093900.0  229.880005  0.3907
11302  11303  CLOV    15  41659000.0    8.620000  0.9519
11464  11465   NIO    15  71208600.0   36.930000  0.4588
11478  11479  MVIS    15  16808800.0   10.390000  0.9753

[192 rows x 6 columns]

# test_version
   Stock Date  Volume  Price     Score
0    GME    1       1      1  0.194760
1    GME    2       1      1  0.126104
2    GME    3       1      1  0.041961
3    GME    4       1      1  0.039760
4    GME    5       1      1  0.105480
..   ...  ...     ...    ...       ...
10  CLOV   11       1      1       NaN
11  CLOV   12       1      1  0.145852
12  CLOV   13       1      1  0.224382
13  CLOV   14       1      1  0.226059
14  CLOV   15       1      1  0.120781

[210 rows x 5 columns]

我不确定我是否正确处理了这个问题,但以下是我尝试过的:

unique_volume.reset_index(drop=True)
test_version.reset_index(drop=True)

test_version['Volume'] = np.where(test_version['Date'] == unique_volume['Date'] and test_version['Stock'] == unique_volume['Stock'], unique_volume['Volume'])


#Output
ValueError: Can only compare identically-labeled Series objects
我渴望得到如下形式的输出:

# Desired Output
   Stock Date  Volume  Price     Score
0    GME    1   6218300.0  184.500000  0.194760
..   ...  ...     ...    ...       ...

14  CLOV   15   6218300.0  184.500000  0.120781

[210 rows x 5 columns]

如果我正确理解了您的问题,那么合并()数据帧应该适合您:

test_version = pd.merge(test_version[['Date', 'Stock']], unique_volume[['Date', 'Stock', 'Volume', 'Price']], on = ['Date', 'Stock'], how = 'left')

这在某种程度上是在进行中的,但它在数据框中添加了新的列:
Stock Date Volume\u x Price\u x Score Volume\u y Price\u y
0 GME 1 1 1 1 0.194760 6218300.0 184.500000
所以您不需要第一个数据框中的股票、日期、价格和数量?我已经编辑了我的答案。谢谢!太好了!:)为了确保我也理解它:我们从test_版本中获取'Date'和'Stock'列,从unique_volume中获取其他4列,比较它们各自的'Date'和'Stock'值,然后将右侧数据框中缺少的列合并到左侧数据框中?@OLGJ你完全正确!如果您发现答案是有用的,请考虑接受和投票的答案,以保持堆栈溢出循环完整。