使用不同逻辑折叠Pandas数据帧中的行

11 浏览
0 Comments

使用不同逻辑折叠Pandas数据帧中的行

我想要将匹配给定列的数据行合并,但其余的列需要使用不同的逻辑进行合并。例如:\n

City           ColumnA   ColumnB
Seattle        20        30
Seattle        30        20
Portland       25        25
Portland       10        40

\n我想要按城市进行合并,让ColumnA保留最低值,ColumnB保留平均值。结果应该是:\n

City           ColumnA   ColumnB
Seattle        20        25
Portland       10        32.5

\n这只是一个例子,实际问题中,我想要应用更复杂的逻辑而不仅仅是min()或mean()。\n有什么正确、清晰和简单的方法可以做到这一点吗?谢谢。

0
0 Comments

问题的原因是在使用Pandas数据框时,如果要按行合并数据,并且每列的逻辑不同,那么使用.groupby和.agg方法时,只能使用预定义的函数(如min、mean等)。如果要应用自定义逻辑,则需要另外的解决方法。

解决方法是通过使用.groupby和.agg方法,并传递一个自定义函数作为参数来实现。可以参考Stack Overflow上的一个问题的回答,该问题提供了一个示例代码,可以帮助解决这个问题。

具体方法如下:

1. 使用.groupby方法将数据框按照指定的列进行分组,设置参数as_index=False以保持原始索引。

2. 使用.agg方法对分组后的数据进行聚合操作,并传递一个字典作为参数。字典的键是要聚合的列名,值是要应用的自定义函数。

3. 自定义函数可以根据具体需求来编写,可以是任何逻辑。

下面是一个示例代码:

df.groupby('City', as_index=False).agg({'ColumnA': custom_function, 'ColumnB': custom_function})

其中,custom_function是一个自定义函数,根据具体需求编写。该函数将应用于每个分组的列。

通过使用这种方法,可以在Pandas数据框中按照不同的逻辑合并行。

0