Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/309.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 如何替换';零';由';一个';对于数据帧中的特定行_Python_Pandas_Dataframe_Numpy_Minimum - Fatal编程技术网

Python 如何替换';零';由';一个';对于数据帧中的特定行

Python 如何替换';零';由';一个';对于数据帧中的特定行,python,pandas,dataframe,numpy,minimum,Python,Pandas,Dataframe,Numpy,Minimum,我有一个数据帧:df1 DP1 DP2 DP3 DP4 DP5 DP6 DP7 DP8 DP9 DP10 OP1 43239.0 46962.0 55858.0 9128.0 30372.0 5932.0 667.0 663.0 0.0 NaN OP2 146.0 73.0 16647.0

我有一个数据帧:df1

                    DP1       DP2       DP3      DP4      DP5      DP6    DP7     DP8  DP9  DP10
OP1             43239.0   46962.0   55858.0   9128.0  30372.0   5932.0  667.0   663.0  0.0   NaN
OP2               146.0      73.0   16647.0   5596.0   1493.0   7175.0   45.0   438.0  NaN   NaN
OP3            266279.0    1189.0       1.0  10939.0  17799.0   4702.0  235.0     NaN  NaN   NaN
OP4            360547.0   56943.0  142271.0  38217.0   1141.0   6757.0    NaN     NaN  NaN   NaN
OP5            380497.0   17946.0   19376.0      0.0   3974.0      NaN    NaN     NaN  NaN   NaN
OP6              6151.0   16525.0   17046.0  11532.0      NaN      NaN    NaN     NaN  NaN   NaN
OP7            142026.0   21999.0     820.0      NaN      NaN      NaN    NaN     NaN  NaN   NaN
OP8             76860.0  102580.0       NaN      NaN      NaN      NaN    NaN     NaN  NaN   NaN
OP9              6210.0       NaN       NaN      NaN      NaN      NaN    NaN     NaN  NaN   NaN
OP10                NaN       NaN       NaN      NaN      NaN      NaN    NaN     NaN  NaN   NaN
Total         1281955.0  264217.0  252019.0  75412.0  54779.0  24566.0  947.0  1101.0  0.0   0.0
Variance       160244.0   37745.0   42003.0  15082.0  13695.0   89.0  474.0  1101.0  NaN  -0.0
Mack's Sigma      400.0     194.0     205.0    123.0    117.0     90.0   22.0    33.0  NaN  -0.0 
我想找到方差行最后两项的最小值。 我想最后两个条目并找到最小值,就像方差一样,最后两个条目是474.0和1101.0,应该添加到Nan位置

输出看起来像

Variance       160244.0   37745.0   42003.0  15082.0  13695.0   89.0  474.0  1101.0  474.0 -0.0
我尝试过以下代码:

minValuesObj = min(df1.loc('Variance'))
使用和
df.min

df1.iloc[-2, -2] = df1.iloc[-2, -4:-2].min()
按最小值与设定值一起使用(按位置选择,这意味着上一个标签的差异
使用
-2
):

或可用于按标签名称定位:

pos = df1.index.get_loc('Variance')
df1.iloc[pos, -2] = df1.iloc[pos, -4:-2].min()
或者,如果需要按
差异选择
用于seelct by标签,对于动态列名称,使用索引
df1。列

df1.loc['Variance', df1.columns[-2]] = df1.loc['Variance', df1.columns[-4:-2]].min()


请您尝试以下,使用和离散元素的概念

import pandas as pd
df.loc['Variance','DP9'] = df.loc['Variance', ['DP7','DP8']].min()
df
输出如下:

                    DP1       DP2       DP3      DP4      DP5      DP6    DP7     DP8    DP9  DP10
OP1             43239.0   46962.0   55858.0   9128.0  30372.0   5932.0  667.0   663.0    0.0   NaN
OP2               146.0      73.0   16647.0   5596.0   1493.0   7175.0   45.0   438.0    NaN   NaN
OP3            266279.0    1189.0       1.0  10939.0  17799.0   4702.0  235.0     NaN    NaN   NaN
OP4            360547.0   56943.0  142271.0  38217.0   1141.0   6757.0    NaN     NaN    NaN   NaN
OP5            380497.0   17946.0   19376.0      0.0   3974.0      NaN    NaN     NaN    NaN   NaN
OP6              6151.0   16525.0   17046.0  11532.0      NaN      NaN    NaN     NaN    NaN   NaN
OP7            142026.0   21999.0     820.0      NaN      NaN      NaN    NaN     NaN    NaN   NaN
OP8             76860.0  102580.0       NaN      NaN      NaN      NaN    NaN     NaN    NaN   NaN
OP9              6210.0       NaN       NaN      NaN      NaN      NaN    NaN     NaN    NaN   NaN
OP10                NaN       NaN       NaN      NaN      NaN      NaN    NaN     NaN    NaN   NaN
Total         1281955.0  264217.0  252019.0  75412.0  54779.0  24566.0  947.0  1101.0    0.0   0.0
Variance       160244.0   37745.0   42003.0  15082.0  13695.0     89.0  474.0  1101.0  474.0  -0.0
Mack's Sigma      400.0     194.0     205.0    123.0    117.0     90.0   22.0    33.0    NaN  -0.0

@耶斯雷尔更新了我的答案。现在它开始工作了。您的第一个解决方案是使用
loc
。我在你之前发布了
iloc
。是的,它是
df1.iloc['Variance',-2:].min()
-不幸地错了。是的,就像你修复了你的解决方案一样,我也修复了。如果我删除了我的解决方案,你会高兴吗?很好,但是如果我们有不同的列,那么它就不起作用了,我们不能只指定列名。无论如何,谢谢你的时间:)@MichaelScofield,只需更改列名,顺便说一句,在iloc中,如果你更改列名(位置),也会发生同样的事情,即使这样也会失败:)干杯,快乐学习。
                    DP1       DP2       DP3      DP4      DP5      DP6    DP7  \
OP1             43239.0   46962.0   55858.0   9128.0  30372.0   5932.0  667.0   
OP2               146.0      73.0   16647.0   5596.0   1493.0   7175.0   45.0   
OP3            266279.0    1189.0       1.0  10939.0  17799.0   4702.0  235.0   
OP4            360547.0   56943.0  142271.0  38217.0   1141.0   6757.0    NaN   
OP5            380497.0   17946.0   19376.0      0.0   3974.0      NaN    NaN   
OP6              6151.0   16525.0   17046.0  11532.0      NaN      NaN    NaN   
OP7            142026.0   21999.0     820.0      NaN      NaN      NaN    NaN   
OP8             76860.0  102580.0       NaN      NaN      NaN      NaN    NaN   
OP9              6210.0       NaN       NaN      NaN      NaN      NaN    NaN   
OP10                NaN       NaN       NaN      NaN      NaN      NaN    NaN   
Total         1281955.0  264217.0  252019.0  75412.0  54779.0  24566.0  947.0   
Variance       160244.0   37745.0   42003.0  15082.0  13695.0     89.0  474.0   
Mack's Sigma      400.0     194.0     205.0    123.0    117.0     90.0   22.0   

                 DP8    DP9  DP10  
OP1            663.0    0.0   NaN  
OP2            438.0    NaN   NaN  
OP3              NaN    NaN   NaN  
OP4              NaN    NaN   NaN  
OP5              NaN    NaN   NaN  
OP6              NaN    NaN   NaN  
OP7              NaN    NaN   NaN  
OP8              NaN    NaN   NaN  
OP9              NaN    NaN   NaN  
OP10             NaN    NaN   NaN  
Total         1101.0    0.0   0.0  
Variance      1101.0  474.0  -0.0  
Mack's Sigma    33.0    NaN  -0.0  
import pandas as pd
df.loc['Variance','DP9'] = df.loc['Variance', ['DP7','DP8']].min()
df
                    DP1       DP2       DP3      DP4      DP5      DP6    DP7     DP8    DP9  DP10
OP1             43239.0   46962.0   55858.0   9128.0  30372.0   5932.0  667.0   663.0    0.0   NaN
OP2               146.0      73.0   16647.0   5596.0   1493.0   7175.0   45.0   438.0    NaN   NaN
OP3            266279.0    1189.0       1.0  10939.0  17799.0   4702.0  235.0     NaN    NaN   NaN
OP4            360547.0   56943.0  142271.0  38217.0   1141.0   6757.0    NaN     NaN    NaN   NaN
OP5            380497.0   17946.0   19376.0      0.0   3974.0      NaN    NaN     NaN    NaN   NaN
OP6              6151.0   16525.0   17046.0  11532.0      NaN      NaN    NaN     NaN    NaN   NaN
OP7            142026.0   21999.0     820.0      NaN      NaN      NaN    NaN     NaN    NaN   NaN
OP8             76860.0  102580.0       NaN      NaN      NaN      NaN    NaN     NaN    NaN   NaN
OP9              6210.0       NaN       NaN      NaN      NaN      NaN    NaN     NaN    NaN   NaN
OP10                NaN       NaN       NaN      NaN      NaN      NaN    NaN     NaN    NaN   NaN
Total         1281955.0  264217.0  252019.0  75412.0  54779.0  24566.0  947.0  1101.0    0.0   0.0
Variance       160244.0   37745.0   42003.0  15082.0  13695.0     89.0  474.0  1101.0  474.0  -0.0
Mack's Sigma      400.0     194.0     205.0    123.0    117.0     90.0   22.0    33.0    NaN  -0.0