Python 使用唯一值合并Dataframe中的两行

Python 使用唯一值合并Dataframe中的两行,python,pandas,dataframe,Python,Pandas,Dataframe,我将一个列表转换为一个数据框,现在我的数据如下所示 我想使用唯一的业务ID合并此数据帧中的两行。如何执行此操作?在groupby中使用first获取第一个非空值 考虑数据帧df df = pd.DataFrame(dict( Bars=[np.nan, 1, 1, np.nan], BusID=list('AABB'), Nightlife=[1, np.nan, np.nan, 1] )) df Bars BusID Nightlife 0 NaN

我将一个列表转换为一个数据框,现在我的数据如下所示


我想使用唯一的业务ID合并此数据帧中的两行。如何执行此操作?

groupby
中使用
first
获取第一个非空值

考虑数据帧
df

df = pd.DataFrame(dict(
    Bars=[np.nan, 1, 1, np.nan],
    BusID=list('AABB'),
    Nightlife=[1, np.nan, np.nan, 1]
))
df

   Bars BusID  Nightlife
0   NaN     A        1.0
1   1.0     A        NaN
2   1.0     B        NaN
3   NaN     B        1.0
然后


groupby
中使用
first
获取第一个非空值

考虑数据帧
df

df = pd.DataFrame(dict(
    Bars=[np.nan, 1, 1, np.nan],
    BusID=list('AABB'),
    Nightlife=[1, np.nan, np.nan, 1]
))
df

   Bars BusID  Nightlife
0   NaN     A        1.0
1   1.0     A        NaN
2   1.0     B        NaN
3   NaN     B        1.0
然后


您可以使用类似于
df.groupby('Business ID').sum()的内容
。例如:

df = pd.DataFrame(data = {'a': [1, 2, 3, 1],
                          'b': [5, 6, None, None],
                          'c': [None, None, 7, 8]})
df
#    a    b    c
# 0  1  5.0  NaN
# 1  2  6.0  NaN
# 2  3  NaN  7.0
# 3  1  NaN  8.0

new_df = df.groupby('a').sum()
new_df
#    b    c
# a          
# 1  5.0  8.0
# 2  6.0  0.0
# 3  0.0  7.0

您可以使用类似于
df.groupby('Business ID').sum()的内容
。例如:

df = pd.DataFrame(data = {'a': [1, 2, 3, 1],
                          'b': [5, 6, None, None],
                          'c': [None, None, 7, 8]})
df
#    a    b    c
# 0  1  5.0  NaN
# 1  2  6.0  NaN
# 2  3  NaN  7.0
# 3  1  NaN  8.0

new_df = df.groupby('a').sum()
new_df
#    b    c
# a          
# 1  5.0  8.0
# 2  6.0  0.0
# 3  0.0  7.0

比我快几秒钟!现在想想,我喜欢先使用
而不是
sum
,因为
groupby
最终会为您合并列。我想要的解决方案使用sum(),因为它将nan值转换为零。使用第一个()的优点是什么?它是否保留了数据类型?不,我使用了
第一个
,因为您说的是
合并
。那是模棱两可的!我猜到你的意思了。我的猜测是假设你想在空白点填入该组列中的其他内容<代码>首先执行此操作
sum
假设合并意味着将该组中的所有内容相加。这不是我所说的合并。我称之为聚合。如果
sum
就是你想要的。无论如何,接受@Engineero的回答。谢谢你的回答。我只是想知道函数的细节。太谢谢你了,比我快几秒钟!现在想想,我喜欢先使用
而不是
sum
,因为
groupby
最终会为您合并列。我想要的解决方案使用sum(),因为它将nan值转换为零。使用第一个()的优点是什么?它是否保留了数据类型?不,我使用了
第一个
,因为您说的是
合并
。那是模棱两可的!我猜到你的意思了。我的猜测是假设你想在空白点填入该组列中的其他内容<代码>首先执行此操作
sum
假设合并意味着将该组中的所有内容相加。这不是我所说的合并。我称之为聚合。如果
sum
就是你想要的。无论如何,接受@Engineero的回答。谢谢你的回答。我只是想知道函数的细节。非常感谢你。