Python 如何替换';零';由';一个';对于数据帧中的特定行
我有一个数据帧:df1Python 如何替换';零';由';一个';对于数据帧中的特定行,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
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