pandas 按 Dataframe 中的最大值垂直划分列

mdfafbf1  于 2022-12-16  发布在  其他
关注(0)|答案(1)|浏览(131)

我有下表:
| 身份证|摘要|摘要_长度|苹果|书|计算机|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 1个|- -|二一零|第二章|1个|无|
| 第二章|...|一百二十|三个|无|1个|
| 三个|...|五十|第二章|第二章|1个|
summary基本上是某种描述,summary_len〈-这些描述的长度,其余的- apple/book/computer以及表中显示的关键字和值-这些是每个描述中出现的值。
我需要规范化这个表,在某种程度上找到最大值-每列(垂直),然后除以这个值,所以输出将如下所示(我把它放在一个格式2/3 -只是为了强调每列的最大值):
| 身份证|摘要|摘要_长度|苹果|书|计算机|
| - ------|- ------|- ------|- ------|- ------|- ------|
| 一个|- -|二一零|2/3| 1/2| 0/1|
| 第二章|...|一百二十|三月三日|0/2| 1/1|
| 三个|...|五十|2/3|二分之二|1/1|
这里的问题是,我不必在每一列中找到max--只需要为那些关键字查找max,我将它们存储在一个列表中,并得到每列的max值:

max_per_col = df_freq[keywords].max()
max_per_col

这是它的外观(使用原始数据):

你能帮我把它应用到以前的 Dataframe 上,并把每一列垂直地除以最大值吗?

wtzytmuj

wtzytmuj1#

只能将筛选列除以最大值:

keywords = ['apple','book','computer']

df_freq[keywords] /= df_freq[keywords].max()

#working like
#df_freq[keywords] = df_freq[keywords] / df_freq[keywords].max()
print (df_freq)
   id  summary_len     apple  book  computer
0   1          210  0.666667   0.5       0.0
1   2          120  1.000000   0.0       1.0
2   3           50  0.666667   1.0       1.0

相关问题