遍历pandas数据框中的列,并将结果输出到新的数据框中

时间:2018-10-08 19:45:01

标签: python pandas dataframe jupyter-notebook

我正在尝试使用df.apply(min_max, axis=0)遍历6 x 22列的pandas数据框中的列,并在具有两列的新数据框中获得输出,如下所示。

   def min_max(column):
      column_names = ['column', 'value']
      output = pd.DataFrame(columns = column_names)
      output2 = pd.DataFrame([column, abs(column.max() - column.min())])
      return output.append(output2)

df显示在所附的img中:first few columns on current dataframe

两个问题:

  1. 我收到以下错误:

    TypeError :(“ Timedelta类型的对象没有len()”,“在索引日期发生”)

  2. 有没有一种方法可以排除所有 不是dtype = int的列?这会进入功能吗?

很多东西被掩盖了。

1 个答案:

答案 0 :(得分:0)

这是一个解决方案:

package com.example.storage;
import com.google.cloud.storage.Blob;
import com.google.cloud.storage.BlobId;
import com.google.cloud.storage.Storage;
import com.google.cloud.storage.StorageOptions;
import com.google.cloud.storage.Blob.BlobSourceOption;
import java.util.Arrays; 
import org.apache.commons.codec.binary.Base64;

public class EncodingSample {
  public static void main(String... args) throws Exception {
    // Instantiates a client
    Storage storage = StorageOptions.getDefaultInstance().getService();
    Blob blob = storage.get(BlobId.of("your-bucket", "your-object"));
    System.out.printf("Data: %s %n", blob.toString());
    // Get object content
    byte[] content = blob.getContent(BlobSourceOption.generationMatch());
    // byte array to string
    String s = new String(content);
    // Bytes values
    System.out.printf("Array: %s %n", Arrays.toString(content));
    // Object content in string
    System.out.printf("Text: %s %n", s);
    // String encoded to Base64
    byte[] encodedBytes = Base64.encodeBase64(s.getBytes());
    // Base64 bytes
    System.out.printf("encodedBytes: %s %n", Arrays.toString(encodedBytes));
    // Base64 encoded string
    System.out.println("String encoded: " + new String(encodedBytes));
  }
}

pandas.DataFrame.select_dtypes

要选择所有数值,请使用numpy.number。