Я бы не стал использовать FrameData
для этого - фреймные данные в основном являются внутренними, и хотя для них есть некоторые законные применения, я не думаю, что это имеет смысл для этой задачи.
Если вы простоВы хотите добавить пустой столбец Delta
во входной CSV-файл, тогда вы можете сделать следующее:
let df : Frame<int, _> = Frame.ReadCsv("C:/temp/test-input.csv", indexCol="ID")
df.AddColumn("Delta", [])
df.SaveCsv("C:/temp/test-output.csv", ["ID"])
Это сделает почти все, что вам нужно - он записывает столбец ID
и дополнительный столбец Delta
,
Единственное предостережение в том, что он не добавляет лишних кавычек вокруг данных.Это не требуется спецификацией CSV, если вам не нужно экранировать запятую в столбце, и я не думаю, что есть простой способ заставить Дидла сделать это.
Итак, я думаю, что вы быдолжны написать свои собственные записи в файл CSV.Ниже показано, как это сделать, но он не корректно экранирует кавычки и запятые (поэтому вы должны использовать SaveCsv
, даже если он не вставляется в кавычки, когда они не нужны):
use writer = new StreamWriter("C:/temp/test-output.csv")
writer.WriteLine("ID,Alpha,Beta,Gamma,Delta")
for key, row in Series.observations df.Rows do
writer.Write(key)
for value in Series.valuesAll row do
writer.Write(",")
writer.Write(sprintf "\"%O\"" (if value.IsSome then value.Value else box ""))
writer.WriteLine()