Julia Pandas-如何将数据框附加在一起

时间:2018-09-20 18:24:57

标签: pandas dataframe julia pycall

使用Julia 1.0 我有大量的数据框,这些数据框是使用pandas(read_csv)读入Julia的,并且正在寻找一种将它们全部附加到单个大数据框中的方法。由于某些原因,“追加”功能无法解决问题。下面是一个简化的示例:

  <td>
  <div class="input-group">
  <input type="text" [(ngModel)]="trips.startDateTime" [max]="today" name="tripstartdate" 
     class="form-control form-control-sm"  [owlDateTimeTrigger]="dt4" [owlDateTime]="dt4">
  <owl-date-time #dt4 [hour12Timer]="true"></owl-date-time>
  </div>

  </td>
  <td>
  <div class="input-group">
  <input type="text" [(ngModel)]="trips.endDateTime" [min]="trips.startDateTime" 
     [max]="today" name="tripenddate" class="form-control form-control-sm" tabindex="5" [owlDateTimeTrigger]="dt3" [owlDateTime]="dt3">
   <owl-date-time #dt3 [hour12Timer]="true"></owl-date-time>
   </div>
   </td>
   <td>
   <input type="text" name='startOdoReading[{{i}}]' class="form-control form-control-sm" [(ngModel)]="trips.startOdoReading [value]=trips.startOdoReading />
   </td>

最后一步有效,但是会生成一个2元素的Array,每个元素都是一个DataFrame

关于如何将两个数据框彼此堆叠的任何想法吗?

2 个答案:

答案 0 :(得分:2)

这似乎可行

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

注意:

  • 我不知道这是Pandas事物还是julia 1.0 PyCall事物,但是该对象似乎在调用方法之前显式需要.pyo字段。如果您尝试df[:append],它将尝试将其解释为好像要尝试为:append:列建立索引。尝试做df[:col3] = 3来了解我的意思
  • 有一个julia原生的DataFrames包。除非您遇到一些奇怪的“我已经准备好的代码”问题,否则无需使用Pandas。即便如此,您也可能只是通过Julia中的Python层使用Pandas使事情复杂化了。

作为参考,这是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 │

答案 1 :(得分:0)

由于您说自己有很多数据框,因此可以将它们添加到列表中。然后使用pd.concat列表,并采用第一个文件的标头(假设它们都具有相同的标头)作为新数据帧的标头。这将跳过所有数据框中的第一行,因此您那里没有一堆标题行。

dfs = [df, df2]

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