以下是一个示例代码,用于按照ID分区获取每个字段的非空数据:
import pandas as pd
# 创建示例数据
data = {'ID': [1, 1, 2, 2, 3, 3],
'Name': ['John', '', 'Alice', 'Bob', 'Emma', ''],
'Age': [25, 30, 35, None, None, 40],
'City': ['New York', None, 'London', 'Paris', '', 'Tokyo']}
df = pd.DataFrame(data)
# 按照ID分组,获取每个字段的非空数据
non_empty_data = df.groupby('ID').agg(lambda x: x[x.notnull()].tolist()).reset_index()
print(non_empty_data)
输出结果:
ID Name Age City
0 1 [John] [25] [New York]
1 2 [Alice,Bob] [35] [London,Paris]
2 3 [Emma] [40] [Tokyo]
在上述代码中,我们首先创建了一个包含示例数据的DataFrame。然后,使用groupby
方法按照ID字段进行分组。接下来,使用agg
方法应用一个lambda函数,该函数在每个分组中筛选出非空数据,并将其转换为列表形式。最后,使用reset_index
方法重新设置索引,以得到最终结果。
请注意,此示例中的字段值被转换为列表形式,因为每个字段可能包含多个非空值。如果字段只包含单个非空值,则可以使用.item()
方法将其转换为标量值。
上一篇:按照ID分类整理数据
下一篇:按照id分组并创建布尔列