GVKun编程网logo

Python Pandas为所选列的行最大值添加列(pandas 某列最大值)

12

对于想了解PythonPandas为所选列的行最大值添加列的读者,本文将是一篇不可错过的文章,我们将详细介绍pandas某列最大值,并且为您提供关于Pandas将列最大值添加到原始数据帧、PANDAS

对于想了解Python Pandas为所选列的行最大值添加列的读者,本文将是一篇不可错过的文章,我们将详细介绍pandas 某列最大值,并且为您提供关于Pandas 将列最大值添加到原始数据帧、PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号、Pandas将具有多个值的行数据合并到列的Python列表中、pandas获得两列或更多列的行最小值的有价值信息。

本文目录一览:

Python Pandas为所选列的行最大值添加列(pandas 某列最大值)

Python Pandas为所选列的行最大值添加列(pandas 某列最大值)

data = {‘name’ : [‘bill’, ‘joe’, ‘steve’],
‘test1’ : [85, 75, 85],
‘test2’ : [35, 45, 83],
‘test3’ : [51, 61, 45]}
frame = pd.DataFrame(data)

我想添加一个新列,以显示每一行的最大值。

所需的输出:

 name test1 test2 test3 HighScore bill  75    75    85    85 joe   35    45    83    83  steve  51   61    45    61

有时

frame[''HighScore''] = max(data[''test1''], data[''test2''], data[''test3''])

可行,但大多数时候会出现此错误:

ValueError:具有多个元素的数组的真值不明确。 使用a.any()或a.all()

为什么有时只能工作?还有另一种方法吗?

答案1

小编典典

frame[‘HighScore’] = frame[[‘test1’,’test2’,’test3’]].max(axis=1)
>>> frame
name test1 test2 test3 HighScore
0 bill 85 35 51 85
1 joe 75 45 61 75
2 steve 85 83 45 85

Pandas 将列最大值添加到原始数据帧

Pandas 将列最大值添加到原始数据帧

如何解决Pandas 将列最大值添加到原始数据帧?

我在下面有一个 Pandas 数据框,我想在其中获得最大的单个列:

       A      B      C      D
0  0.191 -0.191  0.227 -0.607
1 -0.227 -0.418  0.418 -0.416
2  0.607  0.416  0.835 -0.835

我想我可以遍历所有列并将最大值存储在其他位置。只是想知道这是否可以通过 pandas/numpy 操作来处理

感谢任何帮助!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号

PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号

我来自sql背景,并且经常使用以下数据处理步骤:

  1. 按一个或多个字段对数据表进行分区
  2. 对于每个分区,在其每一行中添加一个行号,以行的一个或多个其他字段对行进行排名,分析人员在其中指定升序或降序

例如:

df = pd.DataFrame({'key1' : ['a','a','b','a'],'data1' : [1,2,3,3],'data2' : [1,10,30]})
df
     data1        data2     key1    
0    1            1         a           
1    2            10        a        
2    2            2         a       
3    3            3         b       
4    3            30        a

我正在寻找如何执行相当于此sql窗口函数的PANDAS:

RN = ROW_NUMBER() OVER (PARTITION BY Key1 ORDER BY Data1 ASC,Data2 DESC)


    data1        data2     key1    RN
0    1            1         a       1    
1    2            10        a       2 
2    2            2         a       3
3    3            3         b       1
4    3            30        a       4

我尝试了以下在没有“分区”的情况下必须工作的方法:

def row_number(frame,orderby_columns,orderby_direction,name):
    frame.sort_index(by = orderby_columns,ascending = orderby_direction,inplace = True)
    frame[name] = list(xrange(len(frame.index)))

我试图将这个想法扩展到可以使用分区(熊猫中的组),但是以下操作不起作用:

df1 = df.groupby('key1').apply(lambda t: t.sort_index(by=['data1','data2'],ascending=[True,False],inplace = True)).reset_index()

def nf(x):
    x['rn'] = list(xrange(len(x.index)))

df1['rn1'] = df1.groupby('key1').apply(nf)

但是当我这样做时,我得到了很多NaN。

理想情况下,有一种简洁的方法可以复制sql的窗口函数功能(我已经弄清楚了基于窗口的聚合……这是熊猫的一个内衬)……有人可以和我分享最惯用的方法吗?在PANDAS中编号这样的行?

Pandas将具有多个值的行数据合并到列的Python列表中

Pandas将具有多个值的行数据合并到列的Python列表中

我有一个看起来像的数据框

数据

*id*,*name*,*URL*,*Type*  
    2,birth_france_by_region,http://abc. com,T1 
    2,http://pt. python,T2 
    3,long_lat,T3 
    3,http://pqur. com,T1 
    4,random_time_series,http://sadsdc. com,T2 
    4,http://sadcadf. com,T3
    5,birth_names,http://google. com,T1 
    5,http://helloworld. com,T2 
    5,http://hu. com,T3

我想要一个此数据帧合并id相等的行,并有一个 Type 列表对应于 URL 列表, 所以最终输出应类似于

*id*,*Type*  
2,[http://abc .com,http://pt.python],[T1,T2] 
3,http://pqur. com],[T3,T1] 
4,[http://sadsdc. com,http://sadcadf .com,],[T2,T3] 
5,[http://google .com,http://hu. com],T2,T3]

pandas获得两列或更多列的行最小值

pandas获得两列或更多列的行最小值

如何作为熊猫数据框方程的一部分引用两个数据框的最小值?我尝试使用min()无法正常工作的python函数。很抱歉,如果在某处有充分的文档证明,但无法找到有效的解决方案来解决此问题。我正在寻找与此类似的东西:

data[''eff''] = pd.DataFrame([data[''flow_h''], data[''flow_c'']]).min() *Cp* (data['' Thi''] - data['' Tci''])

我也尝试使用pandasmin()函数,该函数也不起作用。

min_flow = pd.DataFrame([data[''flow_h''], data[''flow_c'']]).min()InvalidIndexError: Reindexing only valid with uniquely valued Index objects

这个错误让我感到困惑。数据列只是数字和名称,我不确定索引在哪里起作用。

import pandas as pdimport numpy as npnp.random.seed(365)rows = 10flow = {''flow_c'': [np.random.randint(100) for _ in range(rows)],        ''flow_d'': [np.random.randint(100) for _ in range(rows)],        ''flow_h'': [np.random.randint(100) for _ in range(rows)]}data = pd.DataFrame(flow)# display(data)   flow_c  flow_d  flow_h0      82      36      431      52      48      122      33      28      773      91      99      114      44      95      275       5      94      646      98       3      887      73      39      928      26      39      629      56      74      50

答案1

小编典典

如果要获取mininum两列或更多列的行,请使用pandas.DataFrame.min并指定axis=1

data[''min_c_h''] = data[[''flow_h'',''flow_c'']].min(axis=1)# display(data)   flow_c  flow_d  flow_h  min_c_h0      82      36      43       431      52      48      12       122      33      28      77       333      91      99      11       114      44      95      27       275       5      94      64        56      98       3      88       887      73      39      92       738      26      39      62       269      56      74      50       50

关于Python Pandas为所选列的行最大值添加列pandas 某列最大值的介绍现已完结,谢谢您的耐心阅读,如果想了解更多关于Pandas 将列最大值添加到原始数据帧、PANDAS中类似SQL的窗口函数:Python Pandas Dataframe中的行编号、Pandas将具有多个值的行数据合并到列的Python列表中、pandas获得两列或更多列的行最小值的相关知识,请在本站寻找。

本文标签: