[英]Copy rows from a dataframe to another dataframe in pandas
我是 python、pandas 和 mariadb 的新手,我需要您的帮助和建议。 我有一个 csv 文件,其中包含每月每天执行的操作的数据。 我需要提取特定日期的所有值并将它们插入数据库。 我想将所有数据存储在 DataFrame 中,然后我会迭代并将当天的数据存储在另一个 DataFrame 中,但我收到以下警告:
The frame.append method is deprecated and will be removed from pandas in a future version. Use pandas.concat instead.
到目前为止,这是我的代码:
import datetime as dt
import pandas as pd
data = pd.read_csv('./files/salesreport.csv',
names=['col_1', 'col_2', 'col_3', 'col_4', 'col_5', 'col_6',
'col_7', 'col_8', 'col_9', 'col_10'],
sep=',',
header=None,
keep_default_na=False,
na_values="")
df = pd.DataFrame(data)
pd.set_option('display.max_columns', None)
now = dt.datetime.now()
# today_date = now.strftime("%m-%d-%Y")
today_date = '07-17-2022' //i'm using this date for testing
tmp_df = pd.DataFrame()
for (index, row) in df.iterrows():
if row.col_1 == today_date:
tmp_df = tmp_df.append(row, ignore_index=True)
我认为如果文件太大,我的方法也可能会引发性能问题。 您能帮我找到最好的解决方案,以便仅将特定日期的记录插入数据库吗? 另外,你能告诉我用 MariaDB 在数据库中插入的最佳方法是什么?
谢谢!
这对我来说听起来像是一个简单的过滤器:
tmp_df = df[df.col_1 == today_date]
(如果这很重要,您可以使用.reset_index()
来跟进)
实际上,重复 append 速度很慢,并且与 pandas 一起使用的 model 很差。
可以这样做
import pandas as pd
from sqlalchemy import create_engine
engine=create_engine('mysql+pymysql://root:root@localhost/test')
df= pd.read_csv('../files/salesreport.csv', names=['col_1', 'col_2', 'col_3', 'col_4', 'col_5', 'col_6',
'col_7', 'col_8', 'col_9', 'col_10'], sep=',', header=None)
#filter by date
df = df[df['col_1'].str.contains('07-17-2022')]
#write data to mysql
df.to_sql('salesreport', engine, schema='test', if_exists='replace', index=True, index_label='id')
或转换为日期时间
#convert to datetime
df['col_1']=pd.to_datetime(df['col_1'], format='%m-%d-%Y')
#filter by date
df=df[df['col_1']=='2022-07-17']
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.