繁体   English   中英

将行从 dataframe 复制到 pandas 中的另一个 dataframe

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM