在Pandas中,如果你想将多行数据追加到单行中,可以使用groupby
和agg
方法结合使用,或者使用apply
方法来自定义合并逻辑。以下是一些示例:
groupby
和agg
假设你有一个DataFrame,你想根据某个键(例如'id')将多行合并为一行,并且你想将某些列的值连接起来。
import pandas as pd
# 创建一个示例DataFrame
data = {
'id': [1, 1, 2, 2, 3],
'value1': ['a', 'b', 'c', 'd', 'e'],
'value2': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)
# 使用groupby和agg将多行合并为一行
result = df.groupby('id').agg({'value1': ''.join, 'value2': list}).reset_index()
print(result)
输出:
id value1 value2
0 1 ab [10, 20]
1 2 cd [30, 40]
2 3 e [50]
apply
如果你需要更复杂的合并逻辑,可以使用apply
方法。
import pandas as pd
# 创建一个示例DataFrame
data = {
'id': [1, 1, 2, 2, 3],
'value1': ['a', 'b', 'c', 'd', 'e'],
'value2': [10, 20, 30, 40, 50]
}
df = pd.DataFrame(data)
# 使用apply自定义合并逻辑
def merge_rows(group):
merged_row = {
'id': group['id'].iloc[0],
'value1': ''.join(group['value1']),
'value2': group['value2'].tolist()
}
return pd.Series(merged_row)
result = df.groupby('id').apply(merge_rows).reset_index(drop=True)
print(result)
输出:
id value1 value2
0 1 ab [10, 20]
1 2 cd [30, 40]
2 3 e [50]
这两个示例都将多行数据合并为一行,并将某些列的值连接起来。你可以根据你的需求调整合并逻辑。
领取专属 10元无门槛券
手把手带您无忧上云