如何从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中加载只是一个值,并为它创建一个循环。有人可以请指教吗?
你不想为此循环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]])
谢谢你的回答。如果我只需要为每家公司进行一次回归,这就会有所帮助,但实际上我需要为每家公司运行多次回归。它是这样的。我读了公司abc的201512数据,在那之后我发现了36个有效数据,我运行了一个回归并记录下了结果。然后我查看同一家公司的201511数据,看看是否还有36个月的有效数据点。如果是的话,我需要在这36个月内进行另一次回归,这与之前的回归只有一个月不同。 –
查看更新的答案,也许会有所帮助。 – acushner
你可以用下面的代码在行迭代:
for index, row in df.iterrows():
然后index
将是行的索引,并且您可以访问列有可以说row["Company"]
为例。
为什么'0'不是有效的月度回报? – acushner
那么你可以使用'value = df ['some_field']。iloc [the_index]'但你可能不希望在'for'循环中有一种方法可以''group_by.aggregate()'采取具体的价值。 – roganjosh
因为0极有可能只是一个缺失的数据点或错字。 –