按列合并同一数据框的行

时间:2020-10-22 11:51:25

标签: python pandas row

我是Python的新手,我可以解决以下问题。 我有一个看起来像这样的数据框:

ID      X1     x2     x3
1       15     NaN    NaN
2       NaN    2      NaN
3       NaN    NaN    5
1       NaN    16     NaN
2       1      NaN    NaN
3       6      NaN    NaN
4       NaN    NaN    75
5       NaN    67     NaN

我想按ID合并行,因此它应如下所示:

ID    x1    x2   x3
1     15    16   NaN
2     1     2    NaN
3     6     NaN  5
4     NaN   NaN  75
5     NaN   67   NaN

我在df.groupby("ID")上尝试了很多,但没有成功。 有人可以为我修复该问题,并为我提供代码。谢谢

2 个答案:

答案 0 :(得分:0)

尝试一下:

int timesPlayed = 0;
int timesToRepeat = 3; //The audio will repeat 3 times

//This method gets called each time your audio finishes playing.
player.onPlayerCompletion.listen((event) {
  //Here goes the code that will be called when the audio finishes
  onComplete();
  setState(() {
    position = duration;
    timesPlayed++;
    if(timesPlayed >= timesToRepeat) {
      timesPlayed = 0;
      await player.stop();
    }
  });
});

答案 1 :(得分:0)

您可以像这样更改现有的groupby。如果您希望用replace代替0.0,可以删除NaN部分:

import numpy as np
df = df.fillna(0).astype(int).groupby('ID').sum().replace(0,np.nan)
print(df)

输出

      
ID    X1    x2    x3
1   15.0  16.0   NaN
2    1.0   2.0   NaN
3    6.0   NaN   5.0
4    NaN   NaN  75.0
5    NaN  67.0   NaN

如果您不想将ID作为索引,则可以添加reset_index

import numpy as np
df = df.fillna(0).astype(int).groupby('ID').sum().replace(0,np.nan).reset_index()
print(df)

输出

   ID    X1    x2    x3
0   1  15.0  16.0   NaN
1   2   1.0   2.0   NaN
2   3   6.0   NaN   5.0
3   4   NaN   NaN  75.0
4   5   NaN  67.0   NaN