Добавление списка номеров в существующий CSV

EDIT RemoveAt - слабость в моей предыдущей версии. Это решение преодолевает это.

public static IEnumerable Shuffle(
        this IEnumerable source,
        Random generator = null)
{
    if (generator == null)
    {
        generator = new Random();
    }

    var elements = source.ToArray();
    for (var i = elements.Length - 1; i >= 0; i--)
    {
        var swapIndex = generator.Next(i + 1);
        yield return elements[swapIndex];
        elements[swapIndex] = elements[i];
    }
}

Обратите внимание на необязательный параметр Random generator, если реализация базовой фреймворка Random не является потокобезопасной или криптографически достаточно сильной для ваших нужд, вы можете ввести свою реализацию в операция.

В этом ответе можно найти подходящую реализацию для криптографически сильной реализации Random с потоковой безопасностью.


Вот идея, расширить IList в (надеюсь) эффективный путь.

public static IEnumerable Shuffle(this IList list)
{
    var choices = Enumerable.Range(0, list.Count).ToList();
    var rng = new Random();
    for(int n = choices.Count; n > 1; n--)
    {
        int k = rng.Next(n);
        yield return list[choices[k]];
        choices.RemoveAt(k);
    }

    yield return list[choices[0]];
}

-2
задан DSL 21 January 2019 в 15:57
поделиться

1 ответ

Это довольно легко сделать с Пандами .

Общий процесс:

  • Чтение в CSV-файле как панде DataFrame.
  • Измените список на серии
  • Добавьте серию в фрейм данных
  • Сохраните фрейм данных

Письменный код:

import pandas as pd
import numpy as np

#import data
df = pd.read_csv('Your_Filename.csv')

#initialize list
list_A = np.arange(365)
list_B = np.arange(365)*2

#change list to series
series_A = pd.Series(list_A)
series_B = pd.Series(list_B) 

#save series as dataframe column
df['column_name_A'] = series_A.values
df['column_name_B'] = series_B.values

#save dataframe to csv
df.to_csv('output_filename.csv')
0
ответ дан BeardedDork 21 January 2019 в 15:57
поделиться
Другие вопросы по тегам:

Похожие вопросы: