当某些列相同时,如何使用Python合并数据行

当某些列相同时,如何使用Python合并数据行,python,pandas,Python,Pandas,现在我有了一个数据帧。我想用commons分隔不同的值,并删除任何空值 import pandas as pd import numpy as np s1 = pd.Series(['a', np.nan,'i']) s2 = pd.Series(['a','f',np.nan]) s3 = pd.Series(['a', 'e','i']) s4 = pd.Series(['c', 'g','j']) df = pd.DataFrame([list(s1), list(s2), l

现在我有了一个数据帧。我想用commons分隔不同的值,并删除任何空值

import pandas as pd
import numpy as np

s1 = pd.Series(['a', np.nan,'i'])
s2 = pd.Series(['a','f',np.nan])
s3 = pd.Series(['a', 'e','i'])
s4 = pd.Series(['c', 'g','j'])
    
df = pd.DataFrame([list(s1), list(s2), list(s3),list(s4)],  columns =  ['A', 'B','C'])
df


    A   B   C
0   a   d   NaN
1   a   f   NaN
2   a   e   i
3   c   g   j
预期结果:

    A   B       C
0   a   d,e,f   i
1   c   g       j
试一试

out = df.groupby('A',as_index=False).agg({'B':','.join,'C':'first'})
   A      B  C
0  a  d,f,e  i
1  c      g  j
更新

out = df.groupby('A',as_index=False).agg({'B':lambda x : ','.join(x.dropna().drop_duplicates()),'C':lambda x : ','.join(x.dropna().drop_duplicates())})
out
   A      B  C
0  a  d,f,e  i
1  c      g  j
试一试

out = df.groupby('A',as_index=False).agg({'B':','.join,'C':'first'})
   A      B  C
0  a  d,f,e  i
1  c      g  j
更新

out = df.groupby('A',as_index=False).agg({'B':lambda x : ','.join(x.dropna().drop_duplicates()),'C':lambda x : ','.join(x.dropna().drop_duplicates())})
out
   A      B  C
0  a  d,f,e  i
1  c      g  j

谢谢我测试它。如果原始数据帧中的单元格B0为NaN,则代码似乎不起作用。如果C0也是“i”而不是NaN。结果将是“我,我”,而不是合并。@荣仁检查更新的眼睛,我已检查更新的版本。如果C0也是“i”而不是“NaN”,则它不是计量。@RongRen检查代码是否将C0更改为IThanks!我测试它。如果原始数据帧中的单元格B0为NaN,则代码似乎不起作用。如果C0也是“i”而不是NaN。结果将是“我,我”,而不是合并。@荣仁检查更新的眼睛,我已检查更新的版本。如果C0也是“i”而不是“NaN”,则它不是计量。@RongRen检查代码是否将C0更改为i