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的回答。谢谢你的回答。我只是想知道函数的细节。非常感谢你。