通过添加新列,使用 pandas 数据框将数据添加到 csv
Adding data to csv using pandas dataframe, by adding new column
我想使用 python 中的 pandas
模块将一些来自 redshift 表的数据附加到 csv 文件。从 python 开始,我可以使用 psycopg2
模块成功连接并从 redshift 表中检索行。现在,我将日期数据存储在 csv 上。所以我需要先在 csv 中创建一个新的日期列,然后将检索到的数据附加到该新列中。
我正在使用以下命令从红移表中读取:
conn=psycopg2.connect( host='my_db_hostname', port=`portnumber`, user='username', password='password', dbname='db')
conn.autocommit = True
cur=conn.cursor()
cur.execute(""" select emp_name, emp_login_count from public.emp_login_detail where login_date=current_date """)
records=cur.fetchall()
cur.close()
现在,我想将这些 emp_name 和 emp_login_count 列附加到现有的 csv。下面是 csv 的快照:
每天我都需要在 csv 中添加新的日期列,然后我需要将 emp_login_count 放在相应人员的姓名上。
我是 Pandas 的新手,不知道如何实施。有人可以帮我吗?
我正在考虑每天您将获得 1 列 emp_name 数据,另一列包含 emp_login_count 数据。
我相信你需要看看:
1 - 使用 read_csv in pandas 读取 csv 文件,因为这将为您提供包含历史信息的数据框。
2 - 每天你必须创建一个 new dataframe, with the information got in the database. If u want, u may use the datetime library and today method 来获取今天的日期并用作列标题。
3 - 将来自 csv 的信息与新数据合并,使用 merge method in pandas,您可能需要这样的东西:df_original.merge(df_new_information, left_on='emp_name', right_on='emp_name', how='outer')
。 left_on 和 right_on 是您将用作参考的列名称。
4 - 使用 to_csv in pandas 编写一个 csv 文件,这将创建一个新的或替换现有的 csv 文件。
抱歉英语不好。
添加以下内容并尝试一下:
records=cur.fetchall()
# Create a dataframe of the SQL query's result
column_names = ['emp_name','login_count']
df = pd.DataFrame(records, columns = column_names)
df.head()
现在为每日登录计数 csv 文件创建另一个数据框
df_daily = pd.read_csv('<INSERT the path_to_csv here>')
df_daily.head()
合并 'emp_name' 列上的两个数据框
result = df.merge(df_daily, on='emp_name')
result.head()
加入后,您可以将 'login_count' 列重命名为今天的日期
result.rename(columns = {'login_count':'< INSERT date here>'}, inplace = True)
然后您可以再次将新数据保存到 csv 文件中:
pd.to_csv('<INSERT name of file.csv>', index=False)
我想使用 python 中的 pandas
模块将一些来自 redshift 表的数据附加到 csv 文件。从 python 开始,我可以使用 psycopg2
模块成功连接并从 redshift 表中检索行。现在,我将日期数据存储在 csv 上。所以我需要先在 csv 中创建一个新的日期列,然后将检索到的数据附加到该新列中。
我正在使用以下命令从红移表中读取:
conn=psycopg2.connect( host='my_db_hostname', port=`portnumber`, user='username', password='password', dbname='db')
conn.autocommit = True
cur=conn.cursor()
cur.execute(""" select emp_name, emp_login_count from public.emp_login_detail where login_date=current_date """)
records=cur.fetchall()
cur.close()
现在,我想将这些 emp_name 和 emp_login_count 列附加到现有的 csv。下面是 csv 的快照:
每天我都需要在 csv 中添加新的日期列,然后我需要将 emp_login_count 放在相应人员的姓名上。
我是 Pandas 的新手,不知道如何实施。有人可以帮我吗?
我正在考虑每天您将获得 1 列 emp_name 数据,另一列包含 emp_login_count 数据。
我相信你需要看看:
1 - 使用 read_csv in pandas 读取 csv 文件,因为这将为您提供包含历史信息的数据框。
2 - 每天你必须创建一个 new dataframe, with the information got in the database. If u want, u may use the datetime library and today method 来获取今天的日期并用作列标题。
3 - 将来自 csv 的信息与新数据合并,使用 merge method in pandas,您可能需要这样的东西:df_original.merge(df_new_information, left_on='emp_name', right_on='emp_name', how='outer')
。 left_on 和 right_on 是您将用作参考的列名称。
4 - 使用 to_csv in pandas 编写一个 csv 文件,这将创建一个新的或替换现有的 csv 文件。
抱歉英语不好。
添加以下内容并尝试一下:
records=cur.fetchall()
# Create a dataframe of the SQL query's result
column_names = ['emp_name','login_count']
df = pd.DataFrame(records, columns = column_names)
df.head()
现在为每日登录计数 csv 文件创建另一个数据框
df_daily = pd.read_csv('<INSERT the path_to_csv here>')
df_daily.head()
合并 'emp_name' 列上的两个数据框
result = df.merge(df_daily, on='emp_name')
result.head()
加入后,您可以将 'login_count' 列重命名为今天的日期
result.rename(columns = {'login_count':'< INSERT date here>'}, inplace = True)
然后您可以再次将新数据保存到 csv 文件中:
pd.to_csv('<INSERT name of file.csv>', index=False)