我正在遍历长度和内容各异的列表元素。这是我使用的对象(keys
)
keys:
key dims
1 ['site', 'channel', 'fiscal_week']
2 ['site', 'dude', 'other', 'fiscal_week']
3 ['site', 'eng', 'dude', 'something_else', 'fiscal_week']
我有一个for循环,在其中循环遍历keys['dims']
:
for key in keys['dims']:
get desired output (see below)
对于此循环,我希望输出可用于标识熊猫数据框中的列的变量。例如,对于key = 1
,我希望在循环过程中完成此操作:
D1 = 'site'
D2 = 'channel'
D3 = 'fiscal_week'
当我进入key = 2
时,我将需要覆盖这些变量,得出:
D1 = 'site'
D2 = 'dude'
D3 = 'other'
D4 = 'fiscal_week'
我的最终目标是使用这些变量,如下所示:
df[D1]+df[D2]...
这是我失败的尝试:
for key in keys['dims']:
print key
d = {}
i = 1
for dim in key:
d['D{0}'.format(i)]=dim
print d
i +=1
这不起作用,因为它最终给出了以下输出:
['site', 'channel', 'fiscal_week']
{'D1': 'site'}
{'D2': 'channel', 'D1': 'site'}
{'D2': 'channel', 'D3': 'fiscal_week', 'D1': 'site'}
['site', 'dude', 'other', 'fiscal_week']
...etc.
非常感谢您的帮助。
答案 0 :(得分:1)
IIUC
df=pd.DataFrame(data=yourdf.dims.values.tolist(),index=yourdf.key)
df.columns+=1
df=df.add_prefix('D')
df['D1']
Out[537]:
key
1 site
2 site
3 site
Name: D1, dtype: object
df
Out[538]:
D1 D2 D3 D4 D5
key
1 site channel fiscal_week None None
2 site dude other fiscal_week None
3 site eng dude something_else fiscal_week
如果您希望它成为字典
d = df.to_dict('index')