我正在使用 pandas 导入一些 .dta 文件,并使用 numpy/sklearn 对集合进行一些统计。我将数据称为 sample
我执行以下操作:
# import neccessary packages
import pandas as pd
import numpy as np
import sklearn as skl
# import data and give a little overview (col = var1-var5, 20 rows)
sample = pd.read_stata('sample_data.dta')
print('variables in dataset')
print(sample.dtypes)
print('first 5 rows and all cols')
print(sample[0:5])
# generate a new var
var6 = sample.var1/sample.var3
如果我直接通过变量名寻址变量(var1
与 sample.var1
),我会收到错误消息。我发现总是包含 sample.
有点乏味。有没有什么好的方法可以直接通过名称调用变量?
最佳答案
请看这个人为的例子。通常我不喜欢搞乱 locals()
和 globals()
但我没有看到更简洁的方法:
class A:
def __init__(self):
self.var1 = 1
self.var2 = 2
obj = A()
locals().update(obj.__dict__)
print(var1)
print(var2)
>> 1
2
由于您使用的是数据框,因此您必须遍历 df.columns
而不是 __dict__
。您的代码将类似于:
import pandas as pd
df = pd.DataFrame({'a':[1]})
for col in df.columns:
locals().update({col: df[col]})
print(a)
>> 0 1
Name: a, dtype: int64
这样做时你应该非常小心,因为这会覆盖你可能已经用相同名称定义的任何变量,例如:
import pandas as pd
a = 7
print(a)
>> 7
df = pd.DataFrame({'a':[1]})
for col in df.columns:
locals().update({col: df[col]})
print(a)
>> 0 1
Name: a, dtype: int64
关于python - 如何处理用 Pandas 导入的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39073123/