-2

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

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

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

我想得到一个 for 循环,它返回“输入”作为新变量名,上面的代码作为该变量的值。

DF - 2 col

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

最终结果将是 Variable1 = 35 Variable2= 187

所以我可以做类似的事情

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


4

1 回答 1

0

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

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}
于 2019-12-06T19:58:17.977 回答