我在 python 中创建了一个临时目录,我在其中保存了一堆 .png 文件供以后使用。我的代码在我需要访问这些 .png 文件之前似乎工作正常 - 当我这样做时,我收到以下错误:
TypeError: expected str, bytes or os.PathLike object, not TemporaryDirectory
Run Code Online (Sandbox Code Playgroud)
当我在 os.path.join 中传递临时目录时抛出错误:
import os
import tempfile
t_dir = tempfile.TemporaryDirectory()
os.path.join (t_dir, 'sample.png')
Traceback (most recent call last):
File "<ipython-input-32-47ee4fce12c7>", line 1, in <module>
os.path.join (t_dir, 'sample.png')
File "C:\Users\donna\Anaconda3\lib\ntpath.py", line 75, in join
path = os.fspath(path)
TypeError: expected str, bytes or os.PathLike object, not TemporaryDirectory
Run Code Online (Sandbox Code Playgroud)
但是,使用 gettempdir() 似乎工作正常。
import os
import tempfile
t_dir = tempfile.gettempdir()
os.path.join (t_dir, 'sample.png')
Run Code Online (Sandbox Code Playgroud)
python 文档建议 tempfile.TemporaryDirectory 使用与 …
我有一个pandas.DataFrame包含很多列.我只对其中type ='object'的那些列('names')感兴趣.我想回答有关此专栏的三个问题:
除了纳米值之外,最常出现的值是什么?
有多少值符合该标准(答案#1中的值计数)?
这些值多久出现一次?
我从一个大型数据帧(df)开始.我感兴趣的专栏叫做'名字'.首先,我使用collection.Counter来获取'names'列中每个唯一值的出现次数:
In [52]: cntr = collections.Counter([r for i, r in df['names'].dropna().iteritems()])
Out[52]: Counter({'Erk': 118,
'James': 120,
'John': 126,
'Michael': 129,
'Phil': 117,
'Ryan': 126})
Run Code Online (Sandbox Code Playgroud)
然后我将Counter转换回数据帧:
In [53]: df1 = pd.DataFrame.from_dict(cntr, orient='index').reset_index()
In [54]: df1 = df1.rename(columns={'index':'names', 0:'cnt'})
Run Code Online (Sandbox Code Playgroud)
这给了我一个包含以下内容的pandas数据框:
In [55]: print (type(df1), df1)
Out[55]: <class 'pandas.core.frame.DataFrame'>
names cnt
0 Erk 118
1 James 120
2 Phil 117
3 John 126
4 Michael 122
5 Ryan 126
Run Code Online (Sandbox Code Playgroud)
下一部分是我需要一些帮助的地方.我在这个例子中的期望输出是:
答案#1 = [John,Ryan]
答案#2 = 2 …
我最近从使用 SQLite 来满足我的大部分数据存储和管理需求过渡到 MySQL。我想我终于安装了正确的库来使用 Python 3.6,但现在我无法从 MySQL 数据库中的数据帧创建新表。
这是我导入的库:
import pandas as pd
import mysql.connector
from sqlalchemy import create_engine
Run Code Online (Sandbox Code Playgroud)
在我的代码中,我首先从 CSV 文件创建一个数据框(这里没有问题)。
def csv_to_df(infile):
return pd.read_csv(infile)
Run Code Online (Sandbox Code Playgroud)
然后我使用这个 def 函数建立到 MySQL 数据库的连接:
def mysql_connection():
user = 'root'
password = 'abc'
host = '127.0.0.1'
port = '3306'
database = 'a001_db'
engine = create_engine("mysql://{0}:{1}@{2}:{3}/{4}?charset=utf8".format(user, password, host, port, database))
return engine
Run Code Online (Sandbox Code Playgroud)
最后,我使用 pandas 函数“to_sql”在 MySQL 数据库中创建数据库表:
def df_to_mysql(df, db_tbl_name, conn=mysql_connection(), index=False):
df.to_sql(con = conn, name = db_tbl_name, if_exists='replace', index = False)
Run Code Online (Sandbox Code Playgroud)
我使用这一行运行代码:
df_to_mysql(csv_to_df(r'path/to/file.csv'), 'new_database_table') …Run Code Online (Sandbox Code Playgroud) python ×3
dataframe ×2
pandas ×2
counter ×1
filepath ×1
mysql ×1
python-3.6 ×1
python-3.x ×1
windows ×1