在带条件的已排序MultiIndex DataFrame的第一行中设置列值

时间:2019-06-11 21:26:38

标签: python pandas dataframe

给出此示例:

public class HowdyJFX extends Application {

     @Override
     public void start(Stage primaryStage) throws Exception {
          final String javaVersion = System.getProperty("java.version");
          final String javafxVersion = System.getProperty("javafx.version");
          final Label l = new Label("Hello, JavaFX " + javafxVersion + ", running on Java " + javaVersion + ".");
          final Scene scene = new Scene(new StackPane(l), 640, 480);
          primaryStage.setScene(scene);
          primaryStage.show();
      }

     public static void main(String[] args) {
         launch();
     }
}

现在Eclipse看起来像这样:

start()

已经生成了df = pd.DataFrame(data=[(1, 'A', 5.0, 0.0), (2, 'A', 3.0, 0.0), (1, 'B', 1.0, 0.0), (2, 'B', 2.0, 0.0), (1, 'C', 6.0, 2.0)], columns=('Date', 'Name', 'limit', 'allocation')).set_index(['Date','Name']) groups = df.groupby('Date') group = groups.get_group(1) groupSorted = group.sort_values(by='limit', ascending=False) 子DataFrame,我希望第一行的groupSorted limit allocation Date Name 1 C 6.0 2.0 A 5.0 0.0 B 1.0 0.0 公式满足groupSorted为0 < / strong>。我该怎么办?

我找到了各种方法来选择具有该条件的第一行。例如,

set

...,甚至是我想要更改的获取 的方法:

allocation

但是没有一个允许我设置这个值。 如何设置该值,使其“粘贴”在原始的allocationgroupSorted[groupSorted.allocation == 0].iloc[0] groupSorted[groupSorted.allocation == 0].head(1) 中?

1 个答案:

答案 0 :(得分:0)

从评论到问题:

要分配给groupSorted,我们可以使用:

groupSorted.loc[(groupSorted['allocation'] == 0).idxmax(), 'allocation'] = 123

要在原始DataFrame中将分配分配给“ stick”,我们可以这样做:

df.at[(groupSorted['allocation'] == 0).idxmax()] = 123