如何用 'One' 替换数据框中特定行的 'Zero'
How to replace 'Zero' by 'One' for particular row in data frame
我有这个dataframe: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
Variance 160244.0 37745.0 42003.0 15082.0 13695.0 89.0 474.0 1101.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.iloc
和df.min
:
df1.iloc[-2, -2] = df1.iloc[-2, -4:-2].min()
使用 DataFrame.iloc
设置值 by min(有 select 按位置编辑,这意味着最后一个标签 Variance
使用 -2
):
df1.iloc[-2, -2] = df1.iloc[-2, -4:-2].min()
或者可以使用 Index.get_loc
作为标签名称的位置:
pos = df1.index.get_loc('Variance')
df1.iloc[pos, -2] = df1.iloc[pos, -4:-2].min()
或者如果需要 select by Variance
使用 DataFrame.loc
按标签选择,对于动态列名使用索引 df1.columns
:
df1.loc['Variance', df1.columns[-2]] = df1.loc['Variance', df1.columns[-4:-2]].min()
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
能否请您尝试使用 loc
和离散元概念进行以下操作。
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
我有这个dataframe: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
Variance 160244.0 37745.0 42003.0 15082.0 13695.0 89.0 474.0 1101.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.iloc
和df.min
:
df1.iloc[-2, -2] = df1.iloc[-2, -4:-2].min()
使用 DataFrame.iloc
设置值 by min(有 select 按位置编辑,这意味着最后一个标签 Variance
使用 -2
):
df1.iloc[-2, -2] = df1.iloc[-2, -4:-2].min()
或者可以使用 Index.get_loc
作为标签名称的位置:
pos = df1.index.get_loc('Variance')
df1.iloc[pos, -2] = df1.iloc[pos, -4:-2].min()
或者如果需要 select by Variance
使用 DataFrame.loc
按标签选择,对于动态列名使用索引 df1.columns
:
df1.loc['Variance', df1.columns[-2]] = df1.loc['Variance', df1.columns[-4:-2]].min()
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
能否请您尝试使用 loc
和离散元概念进行以下操作。
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