将字符串转换为float并对齐数据框

时间:2016-06-23 19:27:16

标签: python pandas dataframe decimal

我有一个Dataframe df,其中Date列属于每个Value列。内容(仍然)格式化为字符串:

             Date       Value1      Date       Value2
Index      
  0        30.01.2001   20,32     30.05.2005    50,55
  1        30.02.2001   19,5      30.06.2005    49,21
  2        30.03.2001   21,45     30.07.2005    48,1

我的问题(按优先顺序排列):

  1. 即使在我成功转换了','之后,我也无法将Value列转换为浮动。到'。'与
  2.   

    df.replace(to_replace =",",value ='。',inplace = True,regex = True)

    所以你能建议我如何转换为浮动?我怀疑不工作的原因是逗号之后有时只有一个小数。我该如何解决这个问题?

    1. 如何对齐日期以使Value2的日期与Value1的日期相匹配(因此,只要行继续,就需要将其向下移动直到匹配为止直到现在?)

    2. 为了对列进行格式化,迭代列的最有效方法是什么?

    3. 编辑: 基于到目前为止的答案...我如何迭代更大的数据帧并按照建议将其拆分为单个/系列? (我在向df& s添加计数器整数时遇到问题,即df1,df2,df3 ......)

1 个答案:

答案 0 :(得分:1)

许多步骤:

 function MultiselectReportUserTags(container, options) {
var newitemtext;
var tags = getTags2();
  if(options.model.ReportUserTags != undefined && options.model.ReportUserTags != "" && options.model.ReportUserTags.search(',') > -1 ) { 
      options.model.ReportUserTags = options.model.ReportUserTags.split(','); 
  }
  $("<select multiple='multiple' data-bind='value: ReportUserTags.text' />")
      .appendTo(container)
      .kendoMultiSelect({
  select: function (e) {
      debugger;
      var value = e.item.text();
      var dataitems = this.dataSource.data();
      var isNewTag = false;

      if (value.indexOf("Add new tag: ") > -1) {
          isNewTag = true;
      }

      value = value.replace("Add new tag: ", "");

      for (var i = 0; i < dataitems.length; i++) {
          var dataItem = dataitems[i];
          if (dataItem.text == value) {
              this.value().slice(0).push(value);
          }
          else if (dataItem.text.substring(0, "Add new tag: ".length) === "Add new tag: ") {
              if (isNewTag) {

                  this.dataSource.remove(dataItem);
                  this.dataSource.add({ text: value, value: value });
              }
              else {
                  this.dataSource.remove(dataItem);
              }
          }
      }

      this.refresh();
      $

  },
  change: function () {
  },
  dataBound: function () {
      if ((newitemtext || this._prev) && newitemtext != this._prev) {
          newitemtext = this._prev;

          var dataitems = this.dataSource.data();

          var isfound = false;
          for (var i = 0; i < dataitems.length; i++) {
              var dataItem = dataitems[i];

              if (dataItem.value != dataItem.text) {
                  dataItem.text = "Add new tag: " + newitemtext;
                  this.refresh();
                  isfound = true;
              }
          }
          if (!isfound) {
              this.dataSource.add({ text: "Add new tag: " + newitemtext, value: newitemtext });
              this.refresh();
          }
          this.search();
          this.open();
      }
  },
  dataSource: tags,
  dataTextField: "text",
  dataValueField: "value",
  filter: "contains",
  animation: false
  });
}

function getTags2() {

  var tagString = 'POSITION;ASSET;LOT;TRADE';
  var tagArray = tagString.split(";");
  var tags = [];
  for (var i = 0; i < tagArray.length; i++) {
      tags[i] = { text: tagArray[i], value: tagArray[i] };
  }

  return tags;

}

enter image description here