【问题标题】:Python Looping Through Lists and Creating Dynamic Variables [duplicate]Python循环遍历列表并创建动态变量
【发布时间】:2019-01-28 05:06:43
【问题描述】:

我正在遍历长度和内容不同的列表元素。这是我使用的对象 (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)

我希望此循环输出可用于识别 pandas 数据框中的列的变量。例如,对于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.

非常感谢任何帮助。

【问题讨论】:

  • 不要尝试创建动态变量。将值放入列表或字典中。

标签: python list pandas for-loop


【解决方案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')

【讨论】:

  • 谢谢@Wen!这帮助很大!
猜你喜欢
  • 1970-01-01
  • 2021-09-18
  • 2016-02-05
  • 2021-12-24
  • 1970-01-01
  • 2019-04-09
  • 2020-03-30
  • 2011-12-03
  • 2019-06-12
相关资源
最近更新 更多