Python 如何改进此数据帧结构?

Python 如何改进此数据帧结构?,python,pandas,Python,Pandas,我写了这段难看的代码。它确实起作用,但并不优雅。有什么改进的建议吗 函数返回给定i,j的dict pairs = [dict({"i":i, "j":j}.items() + function(i, j).items()) for i,j in my_iterator] pairs = pd.DataFrame(pairs).set_index(['i', 'j']) dict({}.items()+函数(i,j).items())应该将两个dict合并为一个,因为dict().update(

我写了这段难看的代码。它确实起作用,但并不优雅。有什么改进的建议吗

函数返回给定i,j的dict

pairs = [dict({"i":i, "j":j}.items() + function(i, j).items()) for i,j in my_iterator]
pairs = pd.DataFrame(pairs).set_index(['i', 'j'])

dict({}.items()+函数(i,j).items())
应该将两个dict合并为一个,因为
dict().update()
不返回合并的dict。

最喜欢的技巧*返回更新的新创建的字典:

dict(i=i, j=j, **function(i, j))
*还有很多

也许还值得一提的是来自_records方法的数据帧

In [11]: my_iterator = [(1, 2), (3, 4)]

In [12]: df = pd.DataFrame.from_records(my_iterator, columns=['i', 'j'])

In [13]: df
Out[13]:
   i  j
0  1  2
1  3  4

我怀疑有一种更有效的方法可以将你的函数矢量化(但如果没有你的具体情况,很难说什么更有意义).

你能举个例子(我的迭代器,函数)吗?@AndyHayden我的迭代器就是itertools。组合(范围(一些常数),2)my_函数是一个R函数的薄包装器,使用RPy2在输入中获取两个熊猫系列:数据[i]和数据[j],返回一个带有各种统计结果的词汇表。另一方面,做
dict(i=i,j=j,**函数(i,j))
,而不是
dict([(((i),i),((j),j)],**函数(i,j))
,会更干净。还有,为什么不呢“有效”?我很好奇,因为我以前从未遇到过任何阻力,而且这至少是一个比较常见的习语…@JoeKington,因为字典中可能包含一些无效关键字的键(我现在想不出正确的术语)。我喜欢它,并且经常使用它。@JoeKington请看@JoeKington,我想“很多”“有点夸张。。。只有一点点争论。