2024-05-23 22:38:46 发布
网友
我有一个数据帧,它有这样的值
ID Name Age Value1 Value2 1 Arya 10 1 Arya 20 2 Sansa 67 2 Sansa 56
我想要这样的输出
ID Name Age Value1 Value2 1 Arya 10 20 2 Sansa 67 56
我知道我们可以使用groupby对他们进行分组,但是Age列是空白的,因此我无法得到期望的结果。 请建议
如果df的每个ID始终有2个值,则可以先对行排序,然后填充Value1和Value2,然后删除重复项:
ID
Value1
Value2
df = df.sort_values(['ID', 'Value1'], ascending=[True, False]) df[['Value1', 'Value2']] = df[['Value1', 'Value2']].replace('', np.NaN) df['Value1'] = df['Value1'].ffill() df['Value2'] = df['Value2'].bfill() df = df.drop_duplicates(subset=['ID'])
输出:
ID Name Age Value1 Value2 1 1 Arya 10 20 3 2 Sansa 67 56
我认为如果每个组和每个列只有一个值,则需要^{}替换为NaN的空值:
NaN
cols = ['Value1','Value2'] df[cols] = df[cols].replace('', np.nan) df = df.groupby(['ID','Name','Age'])[cols].first()
如果df的每个
ID
始终有2个值,则可以先对行排序,然后填充Value1
和Value2
,然后删除重复项:输出:
我认为如果每个组和每个列只有一个值,则需要^{} 替换为
NaN
的空值:相关问题 更多 >
编程相关推荐