连接和排序表无法按预期工作

2024-04-24 05:44:32 发布

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

我有两个表:DFDF2具有相同的结构,如下所示:

df = [
    ['2021-10-02', 'abc', 'cash', '1.50'], ['2021-10-02', 'xyz', 'cash', '2.34'], ['2021-10-02', 'abc', 'ex', '4.55'], ['2021-10-02', 'xyz', 'cash', '10.55'],
    ['2021-10-05', 'jjh', 'cash', '1.20'], ['2021-10-05', 'xyz', 'cash', '0.34'], ['2021-10-05', 'abc', 'cash', '0.43'], ['2021-10-05', 'xyz', 'cash', '34.20'], ['2021-10-05', 'jdh', 'ex', '0.20'], ['2021-10-05', 'xyz', 'hyj', '12.00'],
    ['2021-10-09', 'jhf', 'ex', '12.30'],  ['2021-10-09', 'xyz', 'cash', '1.89'], ['2021-10-09', 'abc', 'ex', '4.05'], ['2021-10-09', 'kgh', 'ex', '3.45'],
    ]

DF = pd.DataFrame(df, columns = ['date', 'typ', 'method', 'price']) 
DF 

enter image description here

df2 = [['2021-10-02', '', '', '100'], ['2021-10-05', '', '', '150'], ['2021-10-09', '', '', '234']]
DF2 = pd.DataFrame(df2, columns = ['date', 'typ', 'method', 'price'])  
DF2

enter image description here

现在,我想将这两个表(DFDF2)合并为一个表,这样表DF2中的行相对于date列始终位于表DF中所选日期的末尾

预期结果:

enter image description here

我尝试使用concat和以后的sort_values如下所示:

pd.concat([DF, DF2]).sort_values(by = 'date').reset_index(drop = True)

然后,我得到这个:

enter image description here

你知道问题在哪里吗?或者是更容易达到预期效果的方法

谢谢你的建议


Tags: columnsdataframedfdatecashpricemethodex
1条回答
网友
1楼 · 发布于 2024-04-24 05:44:32

如果按一列排序不稳定quicksort,则^{}中的默认排序,因此对于预期输出,需要mergesort类似:

df = pd.concat([DF, DF2]).sort_values(by = 'date', kind='mergesort', ignore_index=True)
print (df)
          date  typ method  price
0   2021-10-02  abc   cash   1.50
1   2021-10-02  xyz   cash   2.34
2   2021-10-02  abc     ex   4.55
3   2021-10-02  xyz   cash  10.55
4   2021-10-02                100
5   2021-10-05  jjh   cash   1.20
6   2021-10-05  xyz   cash   0.34
7   2021-10-05  abc   cash   0.43
8   2021-10-05  xyz   cash  34.20
9   2021-10-05  jdh     ex   0.20
10  2021-10-05  xyz    hyj  12.00
11  2021-10-05                150
12  2021-10-09  jhf     ex  12.30
13  2021-10-09  xyz   cash   1.89
14  2021-10-09  abc     ex   4.05
15  2021-10-09  kgh     ex   3.45
16  2021-10-09                234

相关问题 更多 >