小编Jac*_*ack的帖子

如何使用熊猫分组计算时差?

问题

我想diff按小组计算.我不知道如何对time列进行排序,以便每个组的结果都是排序的和正面的.

原始数据:

In [37]: df 
Out[37]:
  id                time
0  A 2016-11-25 16:32:17
1  A 2016-11-25 16:36:04
2  A 2016-11-25 16:35:29
3  B 2016-11-25 16:35:24
4  B 2016-11-25 16:35:46
Run Code Online (Sandbox Code Playgroud)

我想要的结果

Out[40]:
   id   time
0  A   00:35
1  A   03:12
2  B   00:22
Run Code Online (Sandbox Code Playgroud)

注意:时间col的类型是timedelta64 [ns]

In [38]: df['time'].diff(1)
Out[38]:
0                 NaT
1            00:03:47
2   -1 days +23:59:25
3   -1 days +23:59:55
4            00:00:22
Name: time, dtype: timedelta64[ns]
Run Code Online (Sandbox Code Playgroud)

没有得到理想的结果.

希望

不仅解决问题,而且代码可以快速运行,因为有5000万行.

python sorting timedelta pandas difference

16
推荐指数
1
解决办法
7571
查看次数

如何将sklearn决策树规则提取到熊猫布尔条件?

有这么多的帖子这样有关如何提取sklearn决策树的规则,但我找不到任何有关使用熊猫。

这个数据和模型为例,如下

# Create Decision Tree classifer object
clf = DecisionTreeClassifier(criterion="entropy", max_depth=3)

# Train Decision Tree Classifer
clf = clf.fit(X_train,y_train)
Run Code Online (Sandbox Code Playgroud)

结果:

在此处输入图片说明

预期:

关于此示例,有8条规则。

从左到右,请注意该数据帧是 df

r1 = (df['glucose']<=127.5) & (df['bmi']<=26.45) & (df['bmi']<=9.1)
……
r8 =  (df['glucose']>127.5) & (df['bmi']>28.15) & (df['glucose']>158.5)
Run Code Online (Sandbox Code Playgroud)

我不是提取sklearn决策树规则的大师。获取大熊猫布尔条件将有助于我为每个规则计算样本和其他指标。因此,我想将每个规则提取到熊猫的布尔条件。

python machine-learning decision-tree pandas scikit-learn

16
推荐指数
1
解决办法
623
查看次数

如何通过pandas get_dummies()方法为某些列创建虚拟对象?

df = pd.DataFrame({'A': ['x', 'y', 'x'], 'B': ['z', 'u', 'z'],
                  'C': ['1', '2', '3'],
                  'D':['j', 'l', 'j']})
Run Code Online (Sandbox Code Playgroud)

我只是希望A列和D列不是B pd.get_dummies(df)列的假人.如果我使用了,所有列都变成了假人.

我希望最终结果包含所有列,这意味着列C和列B退出,如'A_x','A_y','B','C','D_j','D_l'.

python pandas

15
推荐指数
3
解决办法
2万
查看次数

通过pandas删除两列具有相同值的行

输入:

    S   T   W      U
0   A   A   1   Undirected
1   A   B   0   Undirected
2   A   C   1   Undirected
3   B   A   0   Undirected
4   B   B   1   Undirected
5   B   C   1   Undirected
6   C   A   1   Undirected
7   C   B   1   Undirected
8   C   C   1   Undirected
Run Code Online (Sandbox Code Playgroud)

输出:

    S   T   W      U
1   A   B   0   Undirected
2   A   C   1   Undirected
3   B   A   0   Undirected
5   B   C   1   Undirected
6   C   A   1   Undirected …
Run Code Online (Sandbox Code Playgroud)

pandas

8
推荐指数
1
解决办法
7315
查看次数

插入数据并用排名填充列

原始数据:orginal_table

MID STATE CALL_TIME         RECORD_RANK
a   1    2020-12-18 09:00:00        1
a   2    2020-12-19 09:00:00        2
b   1    2020-12-18 09:00:02        1
c   1    2020-12-18 09:00:03        1
c   1    2020-12-19 09:00:03        2
c   1    2020-12-20 09:00:03        3
d   1    2020-12-19 09:00:00        1
Run Code Online (Sandbox Code Playgroud)

我想插入的数据:insert_table

   MID  STATE      CALL_TIME  
   a    2     2020-12-30 09:00:00      
   b    2     2020-12-19 09:00:02   
   c    1     2020-12-21 09:00:03 
   e    1     2020-12-30 09:00:00 
   f    1     2020-12-30 09:00:00 
   f    2     2020-12-31 09:00:00
Run Code Online (Sandbox Code Playgroud)

目标

  • 原始数据将从第二个数据插入。
  • 对于原始数据和插入数据,该对MID and CALL_TIME是唯一的。
  • RECORD_RANK插入的数据中没有列,但RECORD_RANK会根据MID …

mysql sql count sql-update mysql-5.5

5
推荐指数
1
解决办法
197
查看次数

创建新列,告诉值为什么没有在熊猫上选择它们?

输入

df=pd.DataFrame({'Name':['JOHN','ALLEN','BOB','NIKI','CHARLIE','CHANG'],
              'Age':[35,42,63,29,47,51],
              'Salary_in_1000':[100,93,78,120,64,115],
             'FT_Team':['STEELERS','SEAHAWKS','FALCONS','FALCONS','PATRIOTS','STEELERS']})


n1=(df['Age']< 60)
n2=(df['Salary_in_1000']>=100) 
n3=(df['FT_Team'].str.startswith('S'))
Run Code Online (Sandbox Code Playgroud)

使用这些条件进行选择,它将返回 JOHN 和 CHANG。

目标

我想创建未选择数据的数据框和一个返回不期望条件的新列。例如,

* ALLEN: n1, n2
* BOB: n2,n3
* NIKI: n3
* CHANG: n2,n3
Run Code Online (Sandbox Code Playgroud)

新列名称为reason. 值是条件变量,类型是字符串。

尝试

我必须尝试每个条件并手动记录每个变量违反哪些规则。

pandas

5
推荐指数
1
解决办法
66
查看次数

根据选择的列值划分组数据?

df

\n
   ts_code    type  close\n\n  0 861001.TI   1   648.399\n  1 861001.TI   20  588.574\n  2 861001.TI   30  621.926\n  3 861001.TI   60  760.623\n  4 861001.TI   90  682.313\n  ...   ... ... ...\n  8328  885933.TI   5   1083.141\n  8329  885934.TI   1   951.493\n  8330  885934.TI   5   1011.346\n  8331  885935.TI   1   1086.558\n  8332  885935.TI   5   1028.449\n
Run Code Online (Sandbox Code Playgroud)\n

目标

\n
ts_code    l5d_close l20d_close \xe2\x80\xa6\xe2\x80\xa6 l90d_close\n861001.TI   NaN       1.10          0.95\n\xe2\x80\xa6\xe2\x80\xa6           \xe2\x80\xa6\xe2\x80\xa6       \xe2\x80\xa6\xe2\x80\xa6            \xe2\x80\xa6\xe2\x80\xa6\n
Run Code Online (Sandbox Code Playgroud)\n

我想 groupbyts_code来计算closeof type(1)/the closeof type(N:5,20,30\xe2\x80\xa6\xe2\x80\xa6)861001.TI例如,为l5d_closenan,因为类型为5时没有值。 …

python pandas

5
推荐指数
1
解决办法
347
查看次数

如何使用 tar 来压缩当前目录中的所有文件而不输入 tar 文件和所有文件的名称?

环境:

\n
    \n
  • macOS 塞拉利昂 10.12.6
  • \n
\n

原始输入(示例):

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f1.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f2.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f3.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f4.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f5.csv\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f6.doc\n\n0 directories, 6 files\n
Run Code Online (Sandbox Code Playgroud)\n

在test文件夹中,有6个文件。

\n

预期输出:

\n
.\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 all.tar\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f1.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f2.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f3.md\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f4.txt\n\xe2\x94\x9c\xe2\x94\x80\xe2\x94\x80 f5.csv\n\xe2\x94\x94\xe2\x94\x80\xe2\x94\x80 f6.doc\n\n0 directories, 7 files\n
Run Code Online (Sandbox Code Playgroud)\n

尝试与问题

\n
tar -cvf all.tar f1.md f2.md f3.md f4.txt f5.csv f6.doc \n
Run Code Online (Sandbox Code Playgroud)\n

虽然我用上面的方法得到了结果,但是我必须输入所有文件名和压缩文件名,这很不方便。例如,我可以选择所有文件并右键单击,然后选择压缩选项,而无需输入all.tar(我不介意 .tar 文件名。)

\n

希望

\n

命令行方法,无需输入具体文件名。

\n

unix command-line tar

2
推荐指数
1
解决办法
1万
查看次数

如何检查一个序列是严格单调的还是有一个双方都严格单调的转折点?

输入

l1=[1,3,5,6,7]
l2=[1,2,2,3,4]
l3=[5,4,3,2,1]
l4=[5,5,3,2,1]
l5=[1,2,3,4.1,3,2]
l6=[3,2,1,0.4,1,2,3]
l7=[1,2,10,4,8,9,2]
l8=[1,2,3,4,4,3,2,1]
l9=[-0.05701686,  0.57707936, -0.34602634, -0.02599778]
l10=[ 0.13556905,  0.45859   , -0.34602634, -0.09178798,  0.03044908]
l11=[-0.38643975, -0.09178798,  0.57707936, -0.05701686,  0.00649252]
Run Code Online (Sandbox Code Playgroud)

注意:序列中的值是浮点数。

预期的

  • 编写一个函数find_targeted_seq,该函数返回一个序列,无论是严格单调还是有一个双方都严格单调的转折点。例如,l1, l3, l5,l6是预期的。

尝试

python numpy pandas

2
推荐指数
1
解决办法
290
查看次数

如何在不改变序列顺序的情况下将包括"_"的不同列表元素分组到列表中?

rawinput:

lst = ['a_app','a_bla','a_cat','b','c','d_d1','d_xe','d_c','e_1','e_2','f']

元素lst是字符串

预期结果:

new_lst = [['a_app','a_bla','a_cat'],'b','c',['d_d1','d_xe','d_c'],['e_1','e_2'],'f']

任何元素包括'_'将被分组到列表元素中,但是如果不同,它们的开始将被分组到不同的列表中,例如['a_app','a_bla','a_cat'], ['d_d1','d_xe','d_c'].

注意:新列表的顺序不会仅将包含"_"的压缩字符串更改为列表.

python

0
推荐指数
1
解决办法
33
查看次数