【问题标题】:Different Equation Applied to Specific Rows in DataFrame应用于 DataFrame 中特定行的不同方程
【发布时间】:2021-05-02 10:06:12
【问题描述】:

我正在尝试将密度列添加到数据框中,该列由所示公式计算得出。我需要在某一行(第 66 行)更改参考密度。我尝试了两个 for 循环和一个 for/else 循环,它们每个都为每一行使用一个密度,而不是按照我的意图切换。我已经定义了所有变量,并且没有收到任何错误。

尝试 #1

for index, row in tem80df[tem80df['DREF'] <= 66].iterrows(): 
    density80 = density_crust * (1-(alpha * tem80df['TREF']))
for index, row in tem80df[tem80df['DREF'] > 66].iterrows():
    density80= density_mantle * (1- (alpha *tem80df['TREF']))

尝试 #2

for index, row in tem80df[tem80df['DREF'] <= 66].iterrows(): 
    density80 = density_crust * (1-(alpha * tem80df['TREF']))
else: 
    density80 = density_mantle * (1 - (alpha* tem80df['TREF']))

“DREF”和“TREF”是列名。 'DREF' 是第一列。

我们将不胜感激!

【问题讨论】:

    标签: python pandas loops


    【解决方案1】:
    density_list = []
    TR = <index of column TREF>
    
    # get row count and loop through number of rows in dataframe
    for i in range(0,tem80df.shape[0]):
    
        if i<=66:
            density80 = density_crust * (1-(alpha * tem80df.iloc[i:TR]))
            density_list.append(density80)
    
        else:
            density80= density_mantle * (1- (alpha *tem80df.iloc[i:TR]))
            density_list.append(density80)
    
    tem80df['Density'] = density_list
    

    TR 是列 TREF 的索引,从第一列 = 0 开始。

    【讨论】:

    • 谢谢!不幸的是,仍然遇到一些问题。如果我尝试 TR = ,我会得到一个我无法摆脱的语法错误。如果我用'TREF'替换代码中的TR,我会得到“无法使用的这些索引器[TREF]对进行切片索引。我有之前使用 .astype 将“TREF”分配为浮点数。
    • 您是否尝试过将 TR 设置为等于 TREF 列的数量? TR 应该是一个整数。例如,如果您有 3 列,则第 3 列的索引将为 = 2。如果这不起作用,请尝试发布错误,以便我们准确查看您遇到的问题。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-05-04
    • 2016-02-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-09-10
    • 2015-11-28
    相关资源
    最近更新 更多