Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 如何在dataframe中添加一个新列,该列将多个列分开并找到最大值_Python 3.x_Pandas_Dataframe - Fatal编程技术网

Python 3.x 如何在dataframe中添加一个新列,该列将多个列分开并找到最大值

Python 3.x 如何在dataframe中添加一个新列,该列将多个列分开并找到最大值,python-3.x,pandas,dataframe,Python 3.x,Pandas,Dataframe,这可能是一个真正简单的解决方案,但我对Python3还不熟悉,我有一个包含多列的数据框架。我想在现有的dataframe中添加一个新的列,它执行以下计算,即 New Column = Max((Column A/Column B), (Column C/Column D), (Column E/Column F)) 我可以根据下面的代码做一个max,但我想检查一下如何使用它来做div df['Max'] = df[['Column A','Column B','Column C', 'Colu

这可能是一个真正简单的解决方案,但我对Python3还不熟悉,我有一个包含多列的数据框架。我想在现有的dataframe中添加一个新的列,它执行以下计算,即

New Column = Max((Column A/Column B), (Column C/Column D), (Column E/Column F))
我可以根据下面的代码做一个max,但我想检查一下如何使用它来做div

df['Max'] = df[['Column A','Column B','Column C', 'Column D', 'Column E', 'Column F']].max(axis=1)

Column A Column B Column C Column D Column E Column F  Max
3600     36000     22       11      3200     3200     36000
2300     2300      13       26      1100     1200     2300
1300     13000     15       33      1000     1000     13000

谢谢

您可以尝试以下方法

df['Max'] = df.apply(lambda v: max(v['A'] / v['B'].astype(float), v['C'] / V['D'].astype(float), v['E'] / v['F'].astype(float)), axis=1)
范例

In [14]: df
Out[14]:
   A   B  C   D   E   F
0  1  11  1  11  12  98
1  2  22  2  22  67   1
2  3  33  3  33  23   4
3  4  44  4  44  11  10

In [15]: df['Max'] = df.apply(lambda v: max(v['A'] / v['B'].astype(float), v['C'] /
v['D'].astype(float), v['E'] / v['F'].astype(float)), axis=1)
In [16]: df
Out[16]:
   A   B  C   D   E   F        Max
0  1  11  1  11  12  98   0.122449
1  2  22  2  22  67   1  67.000000
2  3  33  3  33  23   4   5.750000
3  4  44  4  44  11  10   1.100000

你可以试试下面的方法

df['Max'] = df.apply(lambda v: max(v['A'] / v['B'].astype(float), v['C'] / V['D'].astype(float), v['E'] / v['F'].astype(float)), axis=1)
范例

In [14]: df
Out[14]:
   A   B  C   D   E   F
0  1  11  1  11  12  98
1  2  22  2  22  67   1
2  3  33  3  33  23   4
3  4  44  4  44  11  10

In [15]: df['Max'] = df.apply(lambda v: max(v['A'] / v['B'].astype(float), v['C'] /
v['D'].astype(float), v['E'] / v['F'].astype(float)), axis=1)
In [16]: df
Out[16]:
   A   B  C   D   E   F        Max
0  1  11  1  11  12  98   0.122449
1  2  22  2  22  67   1  67.000000
2  3  33  3  33  23   4   5.750000
3  4  44  4  44  11  10   1.100000

您可以通过分步对列进行切片,然后取
max
,对df进行自身div:

In [105]:
df['Max'] = df.ix[:,df.columns[::2]].div(df.ix[:,df.columns[1::2]].values, axis=1).max(axis=1)
df

Out[105]:
   Column A  Column B  Column C  Column D  Column E  Column F  Max
0      3600     36000        22        11      3200      3200    2
1      2300      2300        13        26      1100      1200    1
2      1300     13000        15        33      1000      1000    1
以下是中间值:

In [108]:
df.ix[:,df.columns[::2]].div(df.ix[:,df.columns[1::2]].values, axis=1)

Out[108]:
   Column A  Column C  Column E
0       0.1  2.000000  1.000000
1       1.0  0.500000  0.916667
2       0.1  0.454545  1.000000

您可以通过分步对列进行切片,然后取
max
,对df进行自身div:

In [105]:
df['Max'] = df.ix[:,df.columns[::2]].div(df.ix[:,df.columns[1::2]].values, axis=1).max(axis=1)
df

Out[105]:
   Column A  Column B  Column C  Column D  Column E  Column F  Max
0      3600     36000        22        11      3200      3200    2
1      2300      2300        13        26      1100      1200    1
2      1300     13000        15        33      1000      1000    1
以下是中间值:

In [108]:
df.ix[:,df.columns[::2]].div(df.ix[:,df.columns[1::2]].values, axis=1)

Out[108]:
   Column A  Column C  Column E
0       0.1  2.000000  1.000000
1       1.0  0.500000  0.916667
2       0.1  0.454545  1.000000