小编mid*_*uru的帖子

Python,pandas:如何按索引对数据帧进行排序

当存在如下所示的DataFrame时:

import pandas as pd
df = pd.DataFrame([1, 1, 1, 1, 1], index=[100, 29, 234, 1, 150], columns=['A'])
Run Code Online (Sandbox Code Playgroud)

如何通过索引对此数据帧进行排序,并将索引和列值的每个组合保持不变?

python pandas

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

python pandas pivot_table在一列中计算频率

我仍然是Python pandas的pivot_table的新手,想要问一种计算一列中值的频率的方法,该列也链接到另一列ID.DataFrame如下所示.

import pandas as pd
df = pd.DataFrame({'Account_number':[1,1,2,2,2,3,3],
                   'Product':['A', 'A', 'A', 'B', 'B','A', 'B']
                  })
Run Code Online (Sandbox Code Playgroud)

对于输出,我想得到如下内容:

                Product
                A      B
Account_number           
      1         2      0
      2         1      2
      3         1      1
Run Code Online (Sandbox Code Playgroud)

到目前为止,我尝试了这段代码:

df.pivot_table(rows = 'Account_number', cols= 'Product', aggfunc='count')
Run Code Online (Sandbox Code Playgroud)

这段代码给了我两个相同的东西.上面的代码有什么问题?我问这个问题的部分原因是这个DataFrame只是一个例子.我正在处理的真实数据有数万个account_numbers.感谢您的帮助!

python pandas

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

Python熊猫:在groupby中选择第二个最小值

我有一个如下所示的DataFrame示例:

import pandas as pd
import numpy as np
df = pd.DataFrame({'ID':[1,2,2,2,3,3,], 'date':array(['2000-01-01','2002-01-01','2010-01-01','2003-01-01','2004-01-01','2008-01-01'],dtype='datetime64[D]')})
Run Code Online (Sandbox Code Playgroud)

我正在努力争取每个ID组的第二天最早。所以我写了以下函数:

def f(x):
    if len(x)==1:
        return x[0]
    else:
        x.sort()
        return x[1]
Run Code Online (Sandbox Code Playgroud)

然后我写道:

df.groupby('ID').date.apply(lambda x:f(x))
Run Code Online (Sandbox Code Playgroud)

结果是一个错误。

您能找到一种方法使这项工作吗?

python pandas

6
推荐指数
1
解决办法
4588
查看次数

读取R中用两个冒号分隔的数据

我试图在R中读取用::(两个冒号)分隔的数据.当我使用sep = "::"read.table函数时,我收到一条错误消息,"sep值必须是一个字节." 我想知道我是否可以在R中读取这些数据.我在Python中读取这些数据没有任何问题.

现在,我使用sep=":"然后在另一个":"的列中获取NA.所以我删除了NA的列.有没有办法直接通过在R中指定sep ="::"来读取数据?

r separator

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

检查Python中两个长项目列表的重叠

我有两个列表(list1和list2),其中包含1000万个公司名称.每个列表都没有重复,但有些公司出现在两个列表中.而且我想找到那些公司是什么.我写了下面的代码:

list_matched = []
for i in range(len(list1)):
    for j in range(len(list2)):
        if list1[i] == list2[j]:
            list_matched.append(list1[i])
Run Code Online (Sandbox Code Playgroud)

这段代码的问题在于它永远不会完成执行.我的问题是我可以在合理的时间内完成这项任务.1000万名的大小似乎太大了,无法处理.

python

3
推荐指数
1
解决办法
64
查看次数

MySQL:计算具有相同值的连续行

我已经阅读了几个关于计算连续行的类似问题,但没有一个给我一个明确的答案.我希望有人可以帮我解决一下我的问题.我有下表作为例子.

create table medical
 (PatientID int,
  Date Date,
  TookTest int
 );

insert into medical(PatientID, Date, TookTest)
values
(1, '2014-01-01', 1),
(1, '2014-01-05', 1),
(1, '2014-01-10', 1),
(2, '2014-01-01', 1),
(2, '2014-01-10', 0),
(2, '2014-01-20', 1),
(3, '2014-01-01', 1),
(3, '2014-01-07', 1),
(3, '2014-01-12', 1),
(3, '2014-01-21', 1),
(4, '2014-01-03', 1),
(4, '2014-01-05', 1),
(4, '2014-01-22', 0),
(4, '2014-01-27', 1)
Run Code Online (Sandbox Code Playgroud)

该表用于确定哪些患者在某些日期进行了医学检查.PatientID和日期列非常明显.最后一列,TookTest是二进制指示符列,其中1表示患者参加测试,否则为0.PatientID和日期在创建此表时进行排序.我想计算连续至少3次接受检查的患者人数.在我们的示例中,PatientID 1和3进行了3次或更多次测试.所以答案是2.有人能告诉我如何在MySQL中编写查询吗?感谢您的帮助!

mysql

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

postgreslq 函数中与输入值的条件连接

我有三张表:

create table id_table (
    id integer
);

insert into id_table values (1),(2),(3);

create table alphabet_table (
    id integer,
    letter text
);

insert into alphabet_table values (1,'a'),(2,'b'),(3,'c');

create table greek_table (
    id integer,
    letter text
);

insert into greek_table values (1,'alpha'),(2,'beta');
Run Code Online (Sandbox Code Playgroud)

我喜欢创建一个函数,将 id_table 与 id 上的字母表或希腊表连接起来。表的选择取决于函数中指定的输入值。我写:

CREATE OR REPLACE FUNCTION choose_letters(letter_type text)
  RETURNS table (id integer,letter text) AS $$
BEGIN
  RETURN QUERY
  select t1.id,
         case when letter_type = 'alphabet' then t2.letter else t3.letter end as letter
  from id_table t1,
       alphabet_table …
Run Code Online (Sandbox Code Playgroud)

postgresql join

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

标签 统计

python ×4

pandas ×3

join ×1

mysql ×1

postgresql ×1

r ×1

separator ×1