我有一个pandas.DataFrame
,有3列str
和{float64
类型的列。在
我需要按三个str
列中的一个对行进行分组,并应用一个函数myComplexFunc()
,该函数将把̀N行减少为一行。在
myComplexFunc()
只取float64
类型的行。在
这可以用一些for循环来完成,但效率不高,所以我尝试使用pandas
的flexible apply,但它似乎运行了myComplexFunc()
的重代码两次!在
更清楚地说,这里是一个最小的例子
让“df”成为这样的数据帧: 在
df
>>
A B C D
0 foo one 0.406157 0.735223
1 bar one 1.020493 -1.167256
2 foo two -0.314192 -0.883087
3 bar three 0.271705 -0.215049
4 foo two 0.535290 0.185872
5 bar two 0.178926 -0.459890
6 foo one -1.939673 -0.523396
7 foo three -2.125591 -0.689809
myComplexFunc()
^{pr2}$我想要的:
# wanted apply is the name of the wanted method
df.groupby("A").wanted_apply(myComplexFunc)
>>
A C D
0 foo new_c0_foo new_d0_foo
1 bar new_c0_bar new_d0_bar
列B
已被删除,因为它不是float64
类型。在
提前谢谢
您可以按} 过滤数据帧,但需要按
dtype
按^{Series
df.A
进行聚合:因为如果只使用
^{pr2}$A
:得到
它是正确的-所有字符串列都被排除(
A
和B
)。在相关问题 更多 >
编程相关推荐