如何从Python中的数据框中读取单个值?

问题描述:

我试图找到一种方法来从Python中的大数据框中读取一个值。 我在我的项目中有2个数据表。如何从Python中的数据框中读取单个值?

一个看起来是这样的:

Company ID Company 201512 201511 ... 199402 199401 
1234  abc  1.1  0.8  ... 2.1  -0.9 
. 
. 
. 
4321  cba  2.1  -0.4 ... 0.3  -0.1 

有大约260个月,1家万家企业。我需要逐一检查他们的每月回报,并查看该数据点后面是否有36个有效数据点。这意味着没有“0”或“NaN”。如果有36个有效数据点,则需要对这7个因子进行36个数据点的回归,这些因子列于另一个表中。

其他表看起来像这样:

Month Factor1  Factor2  ...  Factor6  Factor7 
201512 -0.4  1.1   ...  2.1   1.2 
. 
. 
. 
199401 0.1   0.2   ...  0.3   0.4 

现在我的问题是,我无法找到一种方法同时从表1中加载只是一个值,并为它创建一个循环。有人可以请指教吗?

+0

为什么'0'不是有效的月度回报? – acushner

+0

那么你可以使用'value = df ['some_field']。iloc [the_index]'但你可能不希望在'for'循环中有一种方法可以''group_by.aggregate()'采取具体的价值。 – roganjosh

+0

因为0极有可能只是一个缺失的数据点或错字。 –

你不想为此循环for循环。

假设0是一个有效的月度回报,你只有36列Company后有你可以很容易地找到所有的公司具有有效的月收益数据:

df = df[df.notnull().all(1)] 

如果由于一些未知的原因,你想获得对于评论

df = df[df.replace(0, np.nan).notnull().all(1)] 

编辑:摆脱0 S,可以先做一个替代

你可以这样做:

cols = df.columns 
first_col = get_first_return_col(df) 
for i in range(first_col, len(cols)): 
    df = df[df[cols[i : i + 36]].notnull().all(1)] 
    run_regression(df[cols[i]]) 
+1

谢谢你的回答。如果我只需要为每家公司进行一次回归,这就会有所帮助,但实际上我需要为每家公司运行多次回归。它是这样的。我读了公司abc的201512数据,在那之后我发现了36​​个有效数据,我运行了一个回归并记录下了结果。然后我查看同一家公司的201511数据,看看是否还有36个月的有效数据点。如果是的话,我需要在这36个月内进行另一次回归,这与之前的回归只有一个月不同。 –

+0

查看更新的答案,也许会有所帮助。 – acushner

你可以用下面的代码在行迭代:

for index, row in df.iterrows(): 

然后index将是行的索引,并且您可以访问列有可以说row["Company"]为例。