在任何地方都找不到此问题,请在此处尝试:
我要做的基本上是使用groupby功能和一个自写函数修改现有的DataFrame对象:
benchmark =
x y z field_1
1 1 3 a
1 2 5 b
9 2 4 a
1 2 5 c
4 6 1 c
我想做的是groupbyfield_1
,应用一个使用特定列作为输入的函数,在本例中是列x
和{benchmark
,作为一个名为new_field
的新列。函数本身依赖于field_1
中的值,即field_1=a
将产生与{
伪代码类似于:
^{pr2}$谢谢
benchmark =
x y z field_1
1 1 3 a
1 2 5 b
9 2 4 a
1 2 5 c
4 6 1 c
精化:
我还有一个数据框separate_data
,其中包含x
的单独值
separate_data =
x a b c
1 1 3 7
2 2 5 6
3 2 4 4
4 2 5 9
5 6 1 10
这将需要插入到现有的benchmark
数据帧中。在separate_data
中哪个列应该用于插值取决于benchmark
中的列field_1
(即上面集合(a,b,c)
中的值)。新列中的内插值基于benchmark
中的x值。在
结果:
基准=
x y z field_1 field_new
1 1 3 a interpolate using separate_data with x=1 and col=a
1 2 5 b interpolate using separate_data with x=1 and col=b
9 2 4 a ... etc
1 2 5 c ...
4 6 1 c ...
有道理吗?在
下面是一个工作示例:
结果:
^{pr2}$编辑:
我认为您需要先通过^{} +^{} 来重塑} 设置索引名,通过重命名设置
separate_data
,通过^{Serie
的名称。在然后,两个级别都可以使用一些函数
groupby
。在然后^{} 到{},使用默认的左连接:
如有必要,请使用某些函数,主要是如果
^{pr2}$x
与field_1
成对出现重复,则返回漂亮的唯一对:我认为您不能使用
transform
,因为多个列是一起读取的。在所以使用^{} :
然后对于新列有多个解决方案,例如使用^{} (默认
left join
)或{a7}。在两种方法的样品溶液为here。在
{16{a16>可以使用^ new}或列。在
试试这样的方法:
在你的函数中,你可以使用你需要的其他列来创建新的列,例如求平均值、求和等等
apply的文档。 join的文档。在
相关问题 更多 >
编程相关推荐