【问题标题】:Create a new variable for every row in dataframe column为数据框列中的每一行创建一个新变量
【发布时间】:2021-06-16 23:20:12
【问题描述】:

我正在尝试基于现有的 df 列创建一系列变量。示例:

import pandas as pd

dates = {'expiries': ['10','11','13','14']}
expiries = pd.DataFrame(dates)
expiries 

然后我想创建一个新变量(var1 到 var4),为其赋予每一行的值。我知道我可以通过去得到它:

var1 = expiries['expiries'].iloc[0]
var2 = expiries['expiries'].iloc[1]
var3 = expiries['expiries'].iloc[2]
var4 = expiries['expiries'].iloc[3]

但实际上我的 df 是可变长度的,我需要每行一个变量而不是预先确定(硬编码)的变量数。

【问题讨论】:

  • 问题是为什么?如果您不知道变量的数量,您如何键入它们?你在寻找某种for 循环吗?
  • 您可以存储在 dict 中:expiries['expiries'].to_dict() 并在以后真正需要时参考密钥,因为从循环创建变量不是一个好主意。参考:stackoverflow.com/questions/1373164/…
  • 我正在使用变量在新的 df 中创建列。然后我用一些可视化来引用那个df。初始产品选择决定了到期的数量。有时 15 有时 20。如果我将变量预设为 20,当我的产品只有 15 个时,可视化不会运行,因为它们缺少列。欣赏其反代码逻辑的建议。

标签: pandas loops assign


【解决方案1】:

将它们存储在字典中:

var_dict = {}
for i in range(expires.shape[0]):
    var_dict['var' + str(i+1)] = expiries['expiries'].iloc[i]

你有未知数量的变量是违反编码逻辑的

【讨论】:

    【解决方案2】:

    你可以使用exec

    for row in expiries.itertuples():
        idx, value = row
        exec(f'var{idx+1} = {value}')
    
    print(var1, var2, var3, var4)
    >>>
    10 11 13 14
    

    【讨论】:

      猜你喜欢
      • 2021-04-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多