【问题标题】:turn value of row in column 1 into a variable and value of row in column 2 to be the value of variable将第 1 列中的行值转换为变量,将第 2 列中的行值转换为变量的值
【发布时间】:2019-12-06 18:40:14
【问题描述】:

我目前有一个包含 4 列的数据框。我想使用第一列创建一个变量,第二列作为该变量的值。 Col 1 命名为 Input,col 2 命名为 Value

df.loc[df['Input']=='variable1'['Value'].values

产生变量应该是的值,但我必须指定变量1、变量2等。

id 喜欢获取一个 for 循环,该循环返回 'Input' 作为新变量名,并将上面的代码作为该变量的值。

DF - 2 col

Input      | Value
Variable1  |  35
Variable2  |  187
.....
Variable17 |  19

最终的结果是 变量 1 = 35 变量2= 187

这样我就可以做类似的事情了

newdf['computation']=newdf['xyz']+Variable1-Variable2


【问题讨论】:

标签: python pandas dataframe pandas-loc


【解决方案1】:

你可以这样做。在执行此操作之前需要设置您的变量:

Variable1
# 34
df = pd.DataFrame() 
df= df.assign(Input='Variable' + pd.Series(range(1,10)).astype(str)) 
df['Value'] = df['Input'].apply(lambda x: eval(x)) 

输出:

In [2202]: df                                                                                                                                                                                              
Out[2202]: 
       Input  Value
0  Variable1     34
1  Variable2     37
2  Variable3     12
3  Variable4      9
4  Variable5     35
5  Variable6    127
6  Variable7     21
7  Variable8      2
8  Variable9     27

倒退:

df.set_index('Input')['Value'].to_dict()

{'Variable1': 34,
 'Variable2': 37,
 'Variable3': 12,
 'Variable4': 9,
 'Variable5': 35,
 'Variable6': 127,
 'Variable7': 21,
 'Variable8': 2,
 'Variable9': 27}

【讨论】:

  • 这种方法有效,但我不想列出不断变化的变量数量。我希望这个输入数据框的输入文件成为我的变量的基础。提前为 35 创建它们不是很有效。此外,这些变量也不是一个接一个的数字。它可以是 p_e、销售额、利润等
  • iMiller,你想从 DF 创建变量,那么落后对吧?最好的方法是创建一个字典。
  • 然后我可以调用 variable3 作为示例还是需要像字典一样调用它?
  • 你需要像字典一样调用它。我不确定如何将其设置为变量,或者是否可能,因为当我在其中使用 equal 时,eval 会引发错误
猜你喜欢
  • 2021-06-17
  • 2022-07-18
  • 1970-01-01
  • 2020-10-06
  • 2016-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多