社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
私信  •  关注

Datanovice

Datanovice 最近创建的主题
Datanovice 最近回复了
4 年前
回复了 Datanovice 创建的主题 » 在Python中将行值包含特定字符串移动到新列

使用 str.contains 具有 np.where

df['stat1'] = np.where(df['Stats'].str.contains('won|acc|suc',case=False),df['Stats'],'')
df['Stats'] = np.where(df['Stats'].str.contains('won|acc|suc',case=False),'',df['Stats'])


print(df)

         Stats  Value             stat1
0    Def duels    5.0                  
1                 2.5     Def duels Won
2  Back passes   60.0                  
3                55.0  Back passes[Acc]
4     Dribbles    5.0                  
5                 2.0     Dribbles[Suc]
4 年前
回复了 Datanovice 创建的主题 » python-将数据帧追加到sqlite3表中,是BLOB而不是timestamp?

如果你能使用 sqlalchemy 那么你就可以利用 .types

例如:

from sqlalchemy.types import INTEGER, NVARCHAR, DATETIME
# on the assumption you have 3 columns, col_str, col_int, col_date
data_types_dict = {'col_str' : NVARCHAR,
                   'col_int' : INTEGER,
                   'col_date' : DATETIME}
# assuming you have your connection defined as engine
df.to_sql(con=engine,dtypes=data_types_dict,index=False,schema='dim',if_exists='append')

print(data_types_dict)
{'col_str': <class 'sqlalchemy.sql.sqltypes.NVARCHAR'>, 
'col_int': <class 'sqlalchemy.sql.sqltypes.INTEGER'>, 
'col_date': <class 'sqlalchemy.sql.sqltypes.DATETIME'>}

在此处阅读有关SQL Alchemy&SQL lite的更多信息: https://docs.sqlalchemy.org/en/13/dialects/sqlite.html

我个人只使用过postgres和sql server,但从文档来看,它看起来像v.similair。

我们可以将值聚合到一个列表中,然后将其传递到字典中以创建新的数据帧。

new_df = pd.DataFrame(df.groupby("Stat")["Value"].agg(list).to_dict())
# your column order.
cols = df['Stat'].unique()

print(new_df[cols])
      name loca IDnu
0   cobras   DC    2
1  pythons   LA    1
4 年前
回复了 Datanovice 创建的主题 » 使用python消除excel中的重复/重复现象

这并不是说你只是在一个列中用空格填充重复的键,我会处理如下:

通过创建一个掩码,如果行是=上面的行,则返回一个true/false布尔值。

假设您的数据帧名为df

mask = df['NAME'].ne(df['NAME'].shift())

df.loc[~mask,'NAME'] = ''

说明:

我们在上面所做的是:

首先选择一个列,或者用pandas术语a系列,然后应用 .ne (不等于)实际上是 !=

让我们看看这一点。

import pandas as pd
import numpy as np
# create data for dataframe
names = ['Rekha', 'Rekha','Jaya','Jaya','Sushma','Nita','Nita','Nita']
defaults = ['','','c-default','','','c-default','','']
classes = ['forth','third','foruth','fifth','fourth','third','fifth','fourth']

现在,让我们创建一个类似于您的数据帧。

df = pd.DataFrame({'NAME' : names,
         'DEFAULT' : defaults,
         'CLASS' : classes,
         'AGE' : [np.random.randint(1,5) for len in names], 
         'GROUP' : [np.random.randint(1,5) for len in names]}) # being lazy with your age and group variables. 

所以,如果是的话 df['NAME'].ne('Omar') 这和 [df['NAME'] != 'Omar'] 我们会得到的。

0    True
1    True
2    True
3    True
4    True
5    True
6    True
7    True

所以,我们想看看第1行中的名称(记住python是一种0索引语言,所以第1行实际上是第2个物理行)是否 .eq 到上面那一排。

我们通过打电话 [.shift][2] 超链接以获取更多信息。

它的基本功能是用定义的变量号按索引移动行,我们称之为n。

如果我们打电话 df['NAME'].shift(1)

0       NaN
1     Rekha
2     Rekha
3      Jaya
4      Jaya
5    Sushma
6      Nita
7      Nita

我们可以看到雷卡已经下楼了

把这些放在一起,

df['NAME'].ne(df['NAME'].shift())
0     True
1    False
2     True
3    False
4     True
5     True
6    False
7    False

我们把这个赋值给一个自定义变量 mask 你想怎么叫都行。

然后我们用 [.loc][2] 它允许您通过标签或布尔数组(在本例中为数组)访问数据帧。

但是,我们只想访问错误的布尔值,所以我们使用 ~ 它颠倒了我们数组的逻辑。

    NAME    DEFAULT CLASS   AGE GROUP
1   Rekha       third   1   4
3   Jaya        fifth   1   1
6   Nita        fifth   1   2
7   Nita        fourth  1   4

我们现在要做的就是将这些行改为空白,作为您的初始要求,剩下的就是了。

    NAME    DEFAULT   CLASS AGE GROUP
0   Rekha             forth 2   2
1                     third 1   4
2   Jaya    c-default forth 3   3
3                     fifth 1   1
4   Sushma            fourth3   1
5   Nita    c-default third 4   2
6                     fifth 1   2
7                     fourth1   4

希望能有帮助!