Джулия Пандас - как добавлять данные вместе - PullRequest
0 голосов
/ 20 сентября 2018

Работа с Julia 1.0 У меня есть большое количество фреймов данных, которые я считываю в Julia с помощью панд (read_csv), и я ищу способ объединить их все вместе в один большой фрейм данных.По какой-то причине функция «добавить» не работает.Ниже приведен упрощенный пример:

using Pandas 

df = Pandas.DataFrame([[1, 2], [3, 4]], columns=['A', 'B'])

df2 = Pandas.DataFrame([[5, 6], [7, 8]], columns=['A', 'B'])

df[:append](df2)  #fails

df.append(df2)    #fails

df[:concat](df2)  #fails

vcat(df,df2)       

Последний шаг работает, но создает массив из 2 элементов, каждый из которых представляет собой DataFrame

Есть какие-либо идеи о том, как разместить два кадра данных друг над другом?

Ответы [ 2 ]

0 голосов
/ 20 сентября 2018

Кажется, что это работает

julia> df = Pandas.DataFrame([[1, 2], [3, 4]], columns=[:A, :B])
   A  B
0  1  2
1  3  4


julia> df2 = Pandas.DataFrame([[5, 6], [7, 8]], columns=[:A, :B])
   A  B
0  5  6
1  7  8


julia> df.pyo[:append](df2, ignore_index = true )
PyObject    A  B
0  1  2
1  3  4
2  5  6
3  7  8

Примечания:

  • Я не знаю, вещь ли это Панда или вещь Джулии 1.0 PyCall, но объект кажетсяперед вызовом метода нужно явно указать поле .pyo.Если вы попробуете df[:append], он попытается интерпретировать это так, как будто вы пытаетесь проиндексировать столбец :append :.Попробуйте сделать df[:col3] = 3, чтобы понять, что я имею в виду
  • Существует нативный пакет DataFrames от julia.Нет необходимости использовать Pandas, если у вас нет какой-то странной проблемы "Я уже готовый код".И даже тогда вы, вероятно, просто усложняете вещи, используя Pandas через слой Python в Julia.

Для справки, вот эквивалент в julia DataFrames:

julia> df  = DataFrames.DataFrame( [1:2, 3:4], [:A, :B]);
julia> df2 = DataFrames.DataFrame( [5:6, 7:8], [:A, :B]);
julia> append!(df, df2)
4×2 DataFrames.DataFrame
│ Row │ A │ B │
├─────┼───┼───┤
│ 1   │ 1 │ 3 │
│ 2   │ 2 │ 4 │
│ 3   │ 5 │ 7 │
│ 4   │ 6 │ 8 │
0 голосов
/ 20 сентября 2018

Поскольку вы сказали, что у вас много информационных фреймов, вы можете добавить их в список.Затем выполните pd.concat по списку и возьмите заголовок первого файла (при условии, что все они имеют одинаковый заголовок) в качестве заголовка нового кадра данных.Это пропустит первую строку во всех ваших фреймах данных, поэтому у вас там нет ряда строк заголовков.

dfs = [df, df2]

df3 = pd.DataFrame(pd.concat(dfs), columns=df.columns)
...