将多个pandas数据帧附加到单个csv,但仅在第一个附加时包含头

时间:2015-11-17 21:24:54

标签: python csv pandas header dataframe

我需要创建一个.csv文件并将多个数据帧的子集附加到其中。

所有数据帧的结构都相同,但我需要创建带有标题的输出数据集,然后附加所有后续数据帧而不包含标题。

我知道我可以使用第一个数据框中的标题创建输出文件,然后执行一个没有标题的追加循环,但我真的很想学习如何更有效地执行此操作方式。

class DefaultParam {}

trait multi_arg_functions
{
  private static function multi_arg($defaults, $list, $preserve_index = false)
  {
    $arg_keys = array_slice(array_keys($defaults), 0, count($list));

    if ($preserve_index) {
      $listed_arguments = array_slice($list, 0, count($arg_keys));
      $extras = array_slice($list, count($arg_keys), null, true);
    } else {
      $listed_arguments = array_splice($list, 0, count($arg_keys));
      $extras = &$list;
    }
    unset($list);

    $arguments = array_combine($arg_keys, $listed_arguments);
    $arguments = array_filter($arguments, function ($entry) {
      return !($entry instanceof DefaultParam); //remove entries that mean default, a special class in this case
    });
    $arguments = array_merge($defaults, $arguments);

    return [$arguments, $extras];
  }
}

class b {
  use multi_arg_functions;

  static function func1($an_argument = 'a value', $another_argument = 'another value', $third_argument = 'yet another value') { //give defaults here to get hints in an IDE
      list($args, $extras) = self::multi_arg( //note: duplicate names and defaults
          [
          'an_argument' => 'a value',
          'another_argument' => 'another value',
          'third_argument' => 'yet another value!',
          ], func_get_args());

      echo json_encode(['args' => $args, 'extras' => $extras])."\n";
  }
}

$default_param = new DefaultParam();

b::func1('value 1');
b::func1('value 2', $default_param, 'third argument');
b::func1('value 3', $default_param, 'third argument', 'fourth argument');

1 个答案:

答案 0 :(得分:1)

为了有效地执行此操作,您可以使用其中一个http://sevenspark.com/diagnosis/z-index-submenu-hidden-behind-content,因此您有两个完整的数据框(yankdfmetsdf),然后使用to_csv写入csv你一直在做。

当前数据

这里我们有2个数据帧,每个文件一个:

第一个数据帧df

   a  b  c
0  1  2  3
1  4  5  6

第二个数据帧df2

   a   b   c
0  7   6   8
1  9  10  11

使用追加

df = df.append(df2) 

以上行将产生一个可写入文件的df

   a   b   c
0  1   2   3
1  4   5   6
0  7   6   8
1  9  10  11

简而言之:

  • 循环浏览目录
  • 中的文件
  • 使用Merge, join, and concatenate向数据框添加数据,而不是每次都重新分配
  • 单个数据框写入文件