2

情報が 2 つのデータセットにあるという問題に遭遇することがあります。面倒ですが、Access を使用してデータをペアリングし、CSV にエクスポートします。また、for ループを使用して両方のリストを反復処理し、データを照合することもありますが、うまくスケーリングできません。

Python でデータを「リンク」するためのより効率的な方法があるかどうか疑問に思っていました。以下は、私が話していることの例です

この場合、1 つのデータセットにはメーカーとモデルが含まれ、もう 1 つのデータセットには原産国が含まれます。セット A と B のデータを、エクスポートや分析などのために 1 つのデータセットに結合できるようにしたいと考えています。

A=[['Chevy','Suburban'],['Toyota','Camry'],['Honda','Civic']]
B=[['Chevy','America'],['Toyota','Japan'],['Honda','Japan']]

AB =[['Chevy','Suburban','America'],['Toyota','Camry','Japan'],['Honda','Civic','Japan']]

いつものように、どんな助けも大歓迎です!

4

1 に答える 1

3

collections.namedtupleこの目的での使用を検討できると思います:

>>> from collections import namedtuple
>>> MakeOrigin = namedtuple('MakeOrigin', ['make', 'origin'])
>>> MakeModel = namedtuple('MakeModel', ['make', 'model'])
>>> A = [MakeModel('Chevy', 'Suburban'), MakeModel('Toyota', 'Camry'), MakeModel('Honda', 'Civic')]
>>> B = [MakeOrigin('Chevy', 'America'), MakeOrigin('Toyota', 'Japan'), MakeOrigin('Honda', 'Japan')]
>>> AB = [[a.make, a.model, b.origin] for a in A for b in B if a.make == b.make]
>>> AB
[['Chevy', 'Suburban', 'America'], ['Toyota', 'Camry', 'Japan'], ['Honda', 'Civic', 'Japan']]

より読みやすく、より興味深い操作が可能になります。


使用しない場合namedtuple:

>>> A=[['Chevy','Suburban'],['Toyota','Camry'],['Honda','Civic']]
>>> B=[['Chevy','America'],['Toyota','Japan'],['Honda','Japan']]
>>> 
>>> AB = [[a[0], a[1], b[1]] for a in A for b in B if a[0] == b[0]]
>>> AB
[['Chevy', 'Suburban', 'America'], ['Toyota', 'Camry', 'Japan'], ['Honda', 'Civic', 'Japan']]
于 2012-10-01T03:47:21.017 に答える