gpt4 book ai didi

python - 处理数据框以达到多个目标

转载 作者:太空宇宙 更新时间:2023-11-04 09:27:24 25 4
gpt4 key购买 nike

df 看起来像这样

s = {0: [np.nan, 'a' ,'b', 'c', 'd'], 
1: ['A', '8(F)', '6', '8', '4(F)'],
2: ['B', '1', '6', '8(F)', '3(F)'],
3: ['C', '1', '8', '8', '1'],
4: ['D', '1', '2(F)', '6', '8']}

df = pd.DataFrame(data=s)

0 1 2 3 4
0 NaN A B C D
1 a 8(F) 1 1 1
2 b 6 6 8 2(F)
3 c 8 8(F) 8 6
4 d 4(F) 3(F) 1 8

首先,我想用 (F) 选择数据并在新数据框上列出

  Value
0 8(F)
1 4(F)
2 8(F)
3 3(F)
4 2(F)

其次,我要加上大写字母

  Value  Upper
0 8(F) A
1 4(F) A
2 8(F) B
3 3(F) B
4 2(F) D

以及小写字母

  Value  Upper Lower
0 8(F) A a
1 4(F) A d
2 8(F) B c
3 3(F) B d
4 2(F) D b

最后,我想根据下表对每一行进行评论

  Upper Lower  Num
0 A a 9
1 A b 1
2 A c 2
3 A d 3
4 B a 0
5 B b 4
6 B c 8
7 B d 3
8 C a 4
9 C b 8
10 C c 4
11 C d 6
12 D a 4
13 D b 1
14 D c 4
15 D d 3

我将通过比较 ValueNum 来注释每一行

  Value  Upper Lower Comment
0 8(F) A a smaller
1 4(F) A d bigger
2 8(F) B c equal
3 4(F) B d equal
4 2(F) D b smaller

请注意,我不想在我的代码中使用任何 for 循环。希望有人能帮我解决这个烦人的问题。

最佳答案

这是使用merge 并与 df1 进行比较的一种方式

df=df.astype(str)
s=df[df.applymap(lambda x : '(F)' in x)].stack().rename_axis(['Lower','Upper']).reset_index()

s['Comment']=np.sign((s[0].str.split('(').str[0].astype(int)-s.merge(df1).Num)).map({-1:'lt',0:'eq',1:'gt'})
s
Out[753]:
Lower Upper 0 Comment
0 a A 8(F) lt
1 b D 2(F) gt
2 c B 8(F) eq
3 d A 4(F) gt
4 d B 3(F) eq

关于python - 处理数据框以达到多个目标,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57080245/

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