使用python将dfA中一个组中的所有x与dfB中同一组中所有可能的y进行比较

2024-05-23 13:45:23 发布

您现在位置:Python中文网/ 问答频道 /正文

如何将数据集中某个事例的所有x值与另一个数据集中某个事例的所有可能y值进行比较?也就是说,比较这些按大小写复制的数据帧(df.A和df.B)中的所有x和y。 dfA公司

  case  x
0    A  1
1    B  2
2    B  3
3    B  4
4    C  5

[5 rows x 2 columns]

dfB公司

  case  y
0    A  1
1    B  2
2    B  3
3    B  4
4    B  5

[5行x 2列] 为了得到这个dfC

  case       date  x y
0    A 2014-03-02  1 T
1    B 2014-02-02  2 T
2    B 2014-03-01  3 T
3    B 2014-04-08  4 T
4    B 2014-02-02  2 F
5    B 2014-03-01  3 F
6    B 2014-04-08  4 F

要一起工作的东西

dfA = pd.DataFrame(
{'case' : pd.Series(["A","B","B","B","C"]), 
 'x' : pd.Series([1,2,3,4,5])})

dfB = pd.DataFrame({'case':list('ABBBB'), 'y':list('12345')})

Tags: columns数据dataframedfdate公司listrows
1条回答
网友
1楼 · 发布于 2024-05-23 13:45:23

我想如果我正确地理解了这个问题,那么您所需要的就是pd.merge(也许可以调用sort):

import pandas as pd
import datetime as DT

dfA = pd.DataFrame(
    {'case' : pd.Series(["A","B","B","B"]), 
     'date' : pd.Series([DT.datetime(2014, 3, 2), DT.datetime(2014, 2,2),
                         DT.datetime(2014, 3, 1), DT.datetime(2014, 2, 8)]),
     'x' : pd.Series([1,2,3,4])})

dfB = pd.DataFrame({'case':list('ABB'), 'y':list('TTF')})

result = pd.merge(dfA, dfB, on=['case'], how='outer')
result.sort(['case','y','x'], ascending=[True,False,True], inplace=True)
print(result)

收益率

  case       date  x  y
0    A 2014-03-02  1  T
1    B 2014-02-02  2  T
3    B 2014-03-01  3  T
5    B 2014-02-08  4  T
2    B 2014-02-02  2  F
4    B 2014-03-01  3  F
6    B 2014-02-08  4  F

[7 rows x 4 columns]

相关问题 更多 >