删除python pandas DataFrame中基于行比较的特定行

时间:2017-06-18 16:14:42

标签: python pandas dataframe

我是编程和python的新手。我有一个由pandas模块创建的DataFrame。数据集的索引列是" Rho","容量"和"模型 - 版本"。基于这些因素,我进行了一些模拟,发现每次运行的收入为5次。列指示"平均","下限"和"上限"。

现在我想为每个特定的Rho和容量找到最佳收入。所以我应该比较不同模型的上限和下限。如果一行的下限高于另一个上限的值,我应该删除上限小的行。

以下是我目前的代码:

from pandas import *

df_rev = DataFrame.from_csv(path="revenue_total.csv", index_col=[3, 4, 5])

print(df_rev.iloc[0][2])

# removing those revenues in a class that are low:
for index1, row1 in df_rev.iterrows():
    for index2, row2 in df_rev.iterrows():
        if index1[0] is index2[0] and index1[1] is index2[1]:
            if row1[1] > row2[2]:
                df_rev = df_rev.drop(df_rev.index[index2])
            elif row2[1] > row1[2]:
                df_rev = df_rev.drop(df_rev.index[index1])

print(df_rev)

但是,我知道它不起作用。有没有人知道我该怎么办?

由于

1 个答案:

答案 0 :(得分:0)

您应该只是找到最大收入。

a = [['a','a',1,5],['a','a',3,4],['a','b',5,6],['b','c',7,8]]
df = pd.DataFrame(a)
df = df.set_index([0,1])
df.groupby([df.index.get_level_values(0),df.index.get_level_values(1)]).max()

这给出了在索引0和1上分组的其他列的最大值。