我注意到在Pandas DataFrame中选择一个列的三种方法:
使用loc选择列的第一种方法:
df_new = df.loc[:, 'col1']
Run Code Online (Sandbox Code Playgroud)
第二种方法 - 看起来更简单,更快捷:
df_new = df['col1']
Run Code Online (Sandbox Code Playgroud)
第三种方法 - 最方便:
df_new = df.col1
Run Code Online (Sandbox Code Playgroud)
这三种方法有区别吗?我不这么认为,在这种情况下我宁愿使用第三种方法.
我很好奇为什么似乎有三种方法可以做同样的事情.
这个问题没有得到满意的答案,所以我再问一次。
假设我有以下 Pandas DataFrame:
df1 = pd.DataFrame({'group': ['a', 'a', 'b', 'b'], 'values': [1, 1, 2, 2]})
Run Code Online (Sandbox Code Playgroud)
我按第一列“组”分组:
g1 = df1.groupby('group')
Run Code Online (Sandbox Code Playgroud)
我现在已经创建了一个“ DataFrame GroupBy”。然后我从 GroupBy 对象中提取第一列:
g1_1st_column = g1['group']
Run Code Online (Sandbox Code Playgroud)
该类型g1_1st_column的是“pandas.core.groupby。系列的GroupBy”。请注意,它不再是“ DataFrame GroupBy”。
我的问题是,如何将 SeriesGroupBy 对象转换回 DataFrame 对象?我尝试使用 .to_frame() 方法,并得到以下错误:
g1_1st_column = g1['group'].to_frame()
Run Code Online (Sandbox Code Playgroud)
AttributeError:无法访问“SeriesGroupBy”对象的可调用属性“to_frame”,请尝试使用“apply”方法。
我将如何使用 apply 方法或其他一些方法转换为 DataFrame?
我希望AWS Cloud9能够使用我的Anaconda Python环境中的Python版本和特定软件包.我怎样才能做到这一点?我应该在哪里查看设置或配置?
我目前的设置:我有一个带有Ubuntu Linux的AWS EC2实例,我已经配置了AWS Cloud9以使用EC2实例.
我在EC2实例上安装了Anaconda,我创建了一个conda Python3环境,但Cloud9总是想使用我的Linux系统安装的Python3版本.
假设我有以下内容:
df = pd.DataFrame({'a':range(2), 'b':range(2), 'c':range(2), 'd':range(2)})
Run Code Online (Sandbox Code Playgroud)
我想从数据框中“弹出”两列(“ c”和“ d”)到一个新的数据框中,在原始df中保留“ a”和“ b”。以下内容不起作用:
df2 = df.pop(['c', 'd'])
Run Code Online (Sandbox Code Playgroud)
这是我的错误:
TypeError: '['c', 'd']' is an invalid key
Run Code Online (Sandbox Code Playgroud)
除了执行以下操作之外,还有谁知道快速,一流的解决方案?
df2 = df[['c', 'd']]
df3 = df[['a', 'b']]
Run Code Online (Sandbox Code Playgroud)
我知道上面的代码键入起来并不是那么繁琐,但这就是发明DataFrame.pop的原因-为我们节省了从数据库中弹出一列的步骤。
我创建了一个每小时日期数据框,现在我想创建一个列来标记每行(小时)是否处于夏令时。例如,在夏季,该标志应 == 1,而在冬季,该标志应 == 0。
# Localized dates dataframe
dates = pd.DataFrame(data=pd.date_range('2018-1-1', '2019-1-1', freq='h', tz='America/Denver'), columns=['date_time'])
# My failed attempt to create the flag column
dates['dst_flag'] = np.where(dates['date_time'].dt.daylight_saving_time == True, 1, 0)
Run Code Online (Sandbox Code Playgroud) 我的公司有一个正式的调色板,所以我需要在我的 seaborn 图表中使用这些颜色。因此,我想设置默认的 seaborn 调色板,并为这些颜色提供易于使用的名称,例如“p”代表紫色,“g”代表绿色。
这是我到目前为止的代码:
# Required libraries
import matplotlib.pyplot as plt
import seaborn as sns
# Wanted palette details
enmax_palette = ["#808282", "#C2CD23", "#918BC3"]
color_codes_wanted = ['grey', 'green', 'purple']
# Set the palette
sns.set_palette(palette=enmax_palette)
# Assign simple color codes to the palette
Run Code Online (Sandbox Code Playgroud)
请帮助我使用我的“color_codes_wanted”列表为颜色指定简单的名称。
我想通过SSH进入我的Amazon Web Services(AWS)Cloud9弹性云计算(EC2)环境,但是没有分配给Cloud9 EC2环境的密钥对。如何为该环境分配密钥对,以便可以通过SSH进入该环境?
我通过Cloud9界面创建了AWS Cloud9 EC2环境,而不是创建EC2环境,然后通过Cloud9访问它。通常,当我创建EC2环境时,就有机会分配一个现有的密钥对,或创建一个新的密钥对。当我通过Cloud9创建环境时,没有向我提供此选项。
当我运行以下代码时,我收到错误消息:“ UnsupportedOperation:不可写”:
from flask import Flask
app_flask = Flask(__name__)
@app_flask.route('/')
def hello_method():
return "Hello, main page!"
if __name__ == '__main__':
app_flask.run()
Run Code Online (Sandbox Code Playgroud)
谁能提供一些指导?我知道还有另一个问题,但是答案根本没有帮助。以下是错误消息的其余部分:
Traceback (most recent call last):
File "<ipython-input-13-a122d150300b>", line 20, in <module>
app_flask.run()
File "C:\anaconda3\lib\site-packages\flask\app.py", line 938, in run
cli.show_server_banner(self.env, self.debug, self.name, False)
File "C:\anaconda3\lib\site-packages\flask\cli.py", line 629, in show_server_banner
click.echo(message)
File "C:\anaconda3\lib\site-packages\click\utils.py", line 259, in echo
file.write(message)
UnsupportedOperation: not writable
Run Code Online (Sandbox Code Playgroud) 如何删除 Python Flask-Admin 库中的“Home”按钮?
from flask_admin import Admin
flask_admin = Admin(app,
name='Customer Admin',
template_mode='bootstrap3',
# endpoint refers to the blueprint [e.g. url_for('admin_cust.index')] where index() is the function/view
index_view=SecuredAdminIndexView(url='/admin_cust', endpoint='admin_cust')
)
# Add model (database table) views to the page
flask_admin_cust.add_view(UserView(User, db.session, category='Users', name='View/Edit User', endpoint='users'))
flask_admin.add_view(CustSubGroupView(CustSubGroup, db.session, name='Groups', endpoint='groups'))
flask_admin.add_view(GwView(Gw, db.session, endpoint='units', name='Units'))
Run Code Online (Sandbox Code Playgroud) 我想在 pandas 中创建一个简单的计数器,每次循环完成时该计数器都会加一。这应该很简单,但我无法弄清楚...这是我想做的,并带有说明性的 pandas DataFrame:
# Illustrative dataframe
df = pd.DataFrame({'a':[0,0,1,1,0,0,1,1], 'b':[0,1,1,0,0,1,1,0]})
# Initialize counter to zero
counter = 0
# Increment the counter by 1 every time 'a' == 1 and 'b' == 0
df['c'] = [counter += 1 if (df['a'] == 1) and (df['b'] == 0)]
Run Code Online (Sandbox Code Playgroud)
如果有人向我展示如何使用 pandas.apply 使用自定义函数来执行此操作,我会很高兴。本质上,我循环遍历 DataFrame 中的每个记录/行,并比较两列。
我知道我可能可以使用 numpy.where() 来做到这一点,然后进行扩展总和,但我真的很想学习如何将 apply 与自定义函数一起使用。
这是我尝试的另一种方法,使用自定义函数和 pandas.apply:
counter_list = []
counter = 0
def count_cycles(df):
if (df['a'] == 1) and (df['b'] == 0):
counter += 1
counter_list.append(counter) …Run Code Online (Sandbox Code Playgroud) 例如,我想使用 scikit-learn 进行机器学习,使用 pandas、numpy 和 matplotlib/seaborn 进行数据分析。AWS Lambda 是否支持所有这些库?是否有支持的库列表?或者我应该创建一个虚拟服务器,以确保我可以使用我想要的任何 Python 库?
我需要用 Pandas 重现 SQL 所做的事情:
select
del_month
, sum(case when off0_on1 = 1 then 1 else 0 end) as on1
, sum(case when off0_on1 = 0 then 1 else 0 end) as off0
from a1
group by del_month
order by del_month
Run Code Online (Sandbox Code Playgroud)
这是一个示例,说明性的 Pandas 数据框可以处理:
a1 = pd.DataFrame({'del_month':[1,1,1,1,2,2,2,2], 'off0_on1':[0,0,1,1,0,1,1,1]})
Run Code Online (Sandbox Code Playgroud)
这是我尝试用 Pandas 重现上述 SQL 的尝试。第一行有效。第二行报错:
a1['on1'] = a1.groupby('del_month')['off0_on1'].transform(sum)
a1['off0'] = a1.groupby('del_month')['off0_on1'].transform(sum(lambda x: 1 if x == 0 else 0))
Run Code Online (Sandbox Code Playgroud)
这是第二行的错误:
TypeError: 'function' object is not iterable
Run Code Online (Sandbox Code Playgroud)
这以前我的问题曾与lambda函数,这是亟待解决的问题。更大的问题是如何在分组数据上重现 SQL 的“sum(case when)”逻辑。我正在寻找一个通用的解决方案,因为我需要经常做这种事情。我之前问题中的答案建议在 …
我在 TimescaleDB(时间序列数据的 PostgreSQL 扩展)中创建了一个物化视图,当我使用来自 PGAdmin 的以下代码刷新它时,添加了最新数据并且一切正常:
REFRESH MATERIALIZED VIEW CONCURRENTLY
public.time_series_mv
WITH DATA;
Run Code Online (Sandbox Code Playgroud)
当我在 Python 中使用相同的用户 (postgres) 运行完全相同的代码时,它表示成功(即没有发生错误)但最新的数据实际上并未添加到物化视图中......
因此,我尝试创建一个函数来做同样的事情:
CREATE OR REPLACE FUNCTION refresh_time_series_mv()
RETURNS void
SECURITY DEFINER
AS $$
BEGIN
REFRESH MATERIALIZED VIEW CONCURRENTLY time_series_mv with data;
RETURN;
END;
$$ LANGUAGE plpgsql;
Run Code Online (Sandbox Code Playgroud)
然后我按如下方式运行该函数,同样,它在我的浏览器中从 PGAdmin 运行,但当我在我的调度应用程序中从 Python 运行相同的 SQL 时则不起作用。
select refresh_time_series_mv();
Run Code Online (Sandbox Code Playgroud)
这是我的 Python 代码:
import psycopg2
SQL1 = """
REFRESH MATERIALIZED VIEW CONCURRENTLY
public.time_series_mv
WITH DATA
"""
SQL2 = "select refresh_time_series_mv();"
host = os.getenv("HOST")
port = int(os.getenv("PORT")) …Run Code Online (Sandbox Code Playgroud) python ×12
pandas ×6
amazon-ec2 ×2
apply ×2
aws-cloud9 ×2
dataframe ×2
flask ×2
anaconda ×1
aws-lambda ×1
flask-admin ×1
lambda ×1
matplotlib ×1
pgadmin ×1
postgresql ×1
python-3.x ×1
pytz ×1
seaborn ×1
sql ×1
ssh ×1
ssh-keys ×1
timescaledb ×1