gpt4 book ai didi

python - pandas 比较并从另一个数据框中选择最小的数字

转载 作者:行者123 更新时间:2023-12-01 05:24:53 24 4
gpt4 key购买 nike

我有两个数据框。

df1
Out[162]:
a b c
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
10 10 10 10
11 11 11 11

df2
Out[194]:
A B
0 a 3
1 b 4
2 c 5

我希望在 df2 中创建第三列,将 df2['A'] 映射到 df1,并找到 df1 中大于 df2['B'] 中数字的最小数字。例如,对于 df2['C'].ix[0],它应该转到 df1['a'] 并搜索大于 df2['B'].ix[0] 的最小数字,它应该是4.

我有类似 df2['C'] = df2['A'].map( df1[df1 > df2['B']].min() ) 的内容。但这不起作用,因为它不会去 df2['B'] 搜索相应的行。谢谢。

最佳答案

使用apply对于逐行方法:

In [54]:
# create our data
import pandas as pd

df1 = pd.DataFrame({'a':list(range(12)), 'b':list(range(12)), 'c':list(range(12))})
df1
Out[54]:
a b c
0 0 0 0
1 1 1 1
2 2 2 2
3 3 3 3
4 4 4 4
5 5 5 5
6 6 6 6
7 7 7 7
8 8 8 8
9 9 9 9
10 10 10 10
11 11 11 11

[12 rows x 3 columns]

In [68]:
# create our 2nd dataframe, note I have deliberately used alternate values for column 'B'
df2 = pd.DataFrame({'A':list('abc'), 'B':[3,5,7]})
df2
Out[68]:
A B
0 a 3
1 b 5
2 c 7

[3 rows x 2 columns]
In [69]:

# apply row-wise function, must use axis=1 for row-wise
df2['C'] = df2.apply(lambda row: df1[row['A']].ix[df1[row.A] > row.B].min(), axis=1)
df2
Out[69]:
A B C
0 a 3 4
1 b 5 6
2 c 7 8

[3 rows x 3 columns]

pandas docs 中有一些示例用法

关于python - pandas 比较并从另一个数据框中选择最小的数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21583073/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com