我正在使用 linearmodels 包来估计 Panel-OLS。例如,请参见:
import numpy as np
from statsmodels.datasets import grunfeld
data = grunfeld.load_pandas().data
data.year = data.year.astype(np.int64)
# MultiIndex, entity - time
data = data.set_index(['firm','year'])
from linearmodels import PanelOLS
mod = PanelOLS(data.invest, data[['value','capital']], entity_effect=True)
res = mod.fit(cov_type='clustered', cluster_entity=True)
Run Code Online (Sandbox Code Playgroud)
我想在 .tex 文件中导出回归的输出。是否有一种方便的方法可以在没有 CI 之类的其他信息的情况下使用置信度来格式化输出?该问题已在此处的标准 OLS 上下文中提出,但这不适用于“PanelEffectsResults”对象,因为我收到以下错误:
'PanelEffectsResults' object has no attribute 'bse'
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我想使用 .ftr 文件来快速分析数百个表。不幸的是,我在十进制和千位分隔符方面遇到了一些问题,类似于那个帖子,只是 read_feather 不允许decimal=',', thousands='.'选项。我尝试了以下方法:
df['numberofx'] = (
df['numberofx']
.apply(lambda x: x.str.replace(".","", regex=True)
.str.replace(",",".", regex=True))
Run Code Online (Sandbox Code Playgroud)
导致
AttributeError: 'str' object has no attribute 'str'
Run Code Online (Sandbox Code Playgroud)
当我把它改成
df['numberofx'] = (
df['numberofx']
.apply(lambda x: x.replace(".","").replace(",","."))
Run Code Online (Sandbox Code Playgroud)
我在结果中收到一些奇怪的(四舍五入)错误,例如 22359999999999998 而不是 2236 对于某些高于 1k 的数字。所有低于 1k 的都是真实结果的 10 倍,这可能是因为删除了“.”。的浮点数并创建该数字的 int。
试
df['numberofx'] = df['numberofx'].str.replace('.', '', regex=True)
Run Code Online (Sandbox Code Playgroud)
也会导致结果中出现一些奇怪的行为,因为有些数字在 10^12 中,而其他数字则应保持在 10^3 中。
下面是我如何从多个 Excel 文件创建我的 .ftr 文件。我知道我可以简单地从 Excel 文件创建数据帧,但这会大大减慢我的日常计算速度。
我该如何解决这个问题?
编辑:这个问题似乎来自于将 excel 文件作为非美国标准的关于十进制和千位分隔符的 df 读取,而不是将其保存为羽毛。使用pd.read_excel(f, encoding='utf-8', decimal=',', thousands='.')读取 excel …
这是代码和示例结果,我只希望表格的第一列忽略其余部分。Stackoverflow 上有类似的问题,但没有帮助。
<tr>
<td>JOHNSON</td>
<td> 2,014,470 </td>
<td>0.81</td>
<td>2</td>
</tr>
Run Code Online (Sandbox Code Playgroud)
我只想要 JOHNSON,因为它是第一个孩子。我的python代码是:
import requests
from bs4 import BeautifulSoup
def find_raw():
url = 'http://names.mongabay.com/most_common_surnames.htm'
r = requests.get(url)
html = r.content
soup = BeautifulSoup(html)
for n in soup.find_all('tr'):
print n.text
find_raw()
Run Code Online (Sandbox Code Playgroud)
我得到的:
SMITH 2,501,922 1.0061
JOHNSON 2,014,470 0.812
Run Code Online (Sandbox Code Playgroud) 我有一个 PySpark 数据框,想要对几列进行分组,然后计算一些列的总和并计算另一列的不同值。由于countDistinct不是内置聚合函数,我无法使用像我在这里尝试的那样的简单表达式:
sum_cols = ['a', 'b']
count_cols = ['id']
exprs1 = {x: "sum" for x in sum_cols}
exprs2 = {x: "countDistinct" for x in count_cols}
exprs = {**exprs1, **exprs2}
df_aggregated = df.groupby('month','product').agg(exprs)
Run Code Online (Sandbox Code Playgroud)
我也尝试了这个答案中的方法,但是当我仅针对聚合列尝试时,exprs2 = [countDistinct(x) for x in count_cols]我收到了一条错误消息 。AssertionError: all exprs should be Column
如何将总和和不同计数合并到一个聚合中?我知道,我可以对sum列执行一次,然后对列执行一次countDistinct,然后加入两个数据框,但应该有一种解决方案可以一步完成此操作......
假设我有以下 df
df = spark.createDataFrame([
("a", "apple"),
("a", "pear"),
("b", "pear"),
("c", "carrot"),
("c", "apple"),
], ["id", "fruit"])
+---+-------+
| id| fruit|
+---+-------+
| a| apple|
| a| pear|
| b| pear|
| c| carrot|
| c| apple|
+---+-------+
Run Code Online (Sandbox Code Playgroud)
我现在想为每个在水果列中TRUE至少有一列的 id创建一个布尔标志。"pear"fruit
所需的输出如下所示:
+---+-------+------+
| id| fruit| flag|
+---+-------+------+
| a| apple| True|
| a| pear| True|
| b| pear| True|
| c| carrot| False|
| c| apple| False|
+---+-------+------+
Run Code Online (Sandbox Code Playgroud)
对于 pandas,我在groupby().transform() 这里找到了一个解决方案,但我不明白如何将其转换为 PySpark。
python ×5
group-by ×2
pyspark ×2
dataframe ×1
distinct ×1
feather ×1
linearmodels ×1
pandas ×1
panel-data ×1
python-3.x ×1
regression ×1
rounding ×1