小编Shu*_*rma的帖子

如何从数据框列中的某些行中删除字符?

我有一个需要清理的大型数据框,作为示例,请查看此数据框

import pandas as pd

cars = {'Brand': ['Honda Civic','Toyota Corolla','Ford Focus','Audi A4','Suzuki'],
        'Price': ['22000.T','25000.T','27000','.TPX','.NKM1']
        }

df = pd.DataFrame(cars, columns = ['Brand', 'Price'])

print (df)
Run Code Online (Sandbox Code Playgroud)

我想从单词的末尾删除 '.T',并且只删除 '.' 从包含 的行的开头。

通过以下代码行,我可以删除“.T”

df['Price'].replace('.T', '', regex=True)
Run Code Online (Sandbox Code Playgroud)

但它也从“.TPX”中删除了“T”

对此的任何建议表示赞赏。

0    22000
1    25000
2    27000
3       PX
4    .NKM1
Name: Price, dtype: object
Run Code Online (Sandbox Code Playgroud)

也用于删除“。”,当我添加这一行时

f['Price'].replace('.', '', regex=True)
Run Code Online (Sandbox Code Playgroud)

我得到了与预期不同的数据框

0    
1    
2    
3    
4    
Name: Price, dtype: object
Run Code Online (Sandbox Code Playgroud)

python regex dataframe pandas data-cleaning

12
推荐指数
2
解决办法
285
查看次数

如何将 Pandas 数据框中的数字列与 NaN 结合?

我有一个这种格式的数据框:

ID measurement_1 measurement_2
0      3              NaN
1      NaN            5
2      NaN            7 
3      NaN            NaN
Run Code Online (Sandbox Code Playgroud)

我想结合到:

ID measurement measurement_type
0      3              1
1      5              2
2      7              2
Run Code Online (Sandbox Code Playgroud)

对于每一行,在其中一个measurement_1measurement_2列中都有一个值,而不是在两者中,另一列将为 NaN。在某些行中,两列都是 NaN。

我想为测量类型添加一列(取决于哪一列具有值)并从两列中取出实际值,并删除两列中都有 NaN 的行。

有没有简单的方法来做到这一点?

谢谢!

python dataframe pandas

11
推荐指数
3
解决办法
763
查看次数

合并与函数输出相关的熊猫数据帧

是否有一种方便的方法可以根据行之间的距离合并两个数据帧?对于以下示例,我想从最近的 df2 行中获取 df1 行的颜色。距离应计算为((x1-x2)**0.5+(y1-y2)**0.5)**0.5

import pandas as pd

df1 = pd.DataFrame({'x': [50,16,72,61,95,47],'y': [14,22,11,45,58,56],'size':[1,4,3,7,6,5]})
df2 = pd.DataFrame({'x': [10,21,64,31,25,55],'y': [54,76,68,24,34,19],'color':['red','green','blue','white','brown','black']})
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

8
推荐指数
2
解决办法
109
查看次数

使用 python 的“future”模块中的“ThreadPoolExecutor”时是否保证数据安全?

我正在寻找关于这个问题的概念性答案。

我想知道是否ThreadPool在python中使用来执行并发任务,保证数据不被损坏;我的意思是多个线程不会同时访问关键数据

如果是这样,这在ThreadPoolExecutor内部如何工作以确保一次只有一个线程访问关键数据

python

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

替换多索引数据框中的特定值

我有一个带有 3 个索引级别和 2 个数字列的多索引数据框。

A   1   2017-04-01  14.0    87.346878
        2017-06-01  4.0     87.347504
    2   2014-08-01  1.0     123.110001
        2015-01-01  4.0     209.612503
B   3   2014-07-01  1.0     68.540001
        2014-12-01  1.0     64.370003
    4   2015-01-01  3.0     75.000000
Run Code Online (Sandbox Code Playgroud)

我想在新的第二级索引开始的任何地方替换第三级索引第一行中的值。例如:每一行

(A,1,2017-04-01)->0.0   0.0 
(A,2,2014-08-01)->0.0   0.0  
(B,3,2014-07-01)->0.0   0.0  
(B,4,2015-01-01)->0.0   0.0
Run Code Online (Sandbox Code Playgroud)

数据帧太大,按数据帧做数据帧df.xs('A,1')...df.xs(A,2)会很耗时。有什么方法可以让我得到一个掩码并用这些位置的新值替换吗?

python multi-index dataframe pandas

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

获取 Pandas 数据框中列名的排名

我已经将客户 ID 与他们最常购买的表演类型进行了对比:

Genre            Jazz     Dance     Music  Theatre
Customer                                        
100000000001           0      3         1        2
100000000002           0      1         6        2
100000000003           0      3        13        4
100000000004           0      5         4        1
100000000005           1     10        16       14
Run Code Online (Sandbox Code Playgroud)

我想要的结果是根据排名附加列名:

Genre            Jazz     Dance     Music  Theatre          Rank1          Rank2          Rank3          Rank4
Customer                                         
100000000001           0      3         1        2          Dance        Theatre          Music           Jazz
100000000002           0      1         6        2          Music        Theatre          Dance           Jazz
100000000003           0      3        13        4          Music        Theatre          Dance           Jazz
100000000004           0      5         4        1          Dance          Music        Theatre …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

Pandas - 规范化 Json 列表

我正在尝试对 Pandas 数据框中的一列进行规范化,该列是一个字典列表(可能会丢失)。

重现的例子

import pandas as pd
bids = pd.Series([[{'price': 606, 'quantity': 28},{'price': 588, 'quantity': 29},
                   {'price': 513, 'quantity': 33}],[],[{'price': 7143, 'quantity': 15},
                    {'price': 68, 'quantity': 91},{'price': 6849, 'quantity': 12}]])
data = pd.DataFrame([1,2,3]).rename(columns={0:'id'})
data['bids'] = bids
Run Code Online (Sandbox Code Playgroud)

期望输出

id price quantity
1  606    28
1  588    29
1  513    33
3  7143   15
3  68     91
3  6849   12
Run Code Online (Sandbox Code Playgroud)

试图

尝试使用 Pandas json_normalize 解决,遵循此处的文档。我很困惑为什么下面的方法都不起作用,以及什么类型的 record_path 可以解决我的问题。以下所有错误。

pd.json_normalize(data['bids'])
pd.json_normalize(data['bids'],['price','quantity'])
pd.json_normalize(data['bids'],[['price','quantity']])
Run Code Online (Sandbox Code Playgroud)

python json normalize dataframe pandas

5
推荐指数
2
解决办法
688
查看次数

根据最后一行值过滤列

我有一个数据框并添加了最后一行的总计。

import pandas as pd
df = pd.DataFrame({'D': {0: 6, 1: 4, 2: 6},
                    'A': {0: 1, 1: 2, 2: 3},
                    'C': {0: 2, 1: 7, 2: 5},
                    'B': {0: 4, 1: 5, 2: 6}})
df = df.append(df.sum(), ignore_index=True)
df

    D  A   C   B
0   6  1   2   4
1   4  2   7   5
2   6  3   5   6
3  16  6  14  15
Run Code Online (Sandbox Code Playgroud)

如何过滤,例如仅保留最后一行值(总计)高于 10 的列?预期输出:

    D  C   B
0   6  2   4
1   4  7   5
2   6 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

根据日期条件创建列,但出现此错误 AttributeError: 'SeriesGroupBy' object has no attribute 'sub'?

嘿,这里是一个 python 新手。

假设我有这个数据数据框的前两列:

df = pd.DataFrame({'group': ["Sun", "Moon", "Sun", "Moon", "Mars", "Mars"],
                   'score': [2, 13, 24, 15, 11, 44], 
                   'datetime': ["2017-08-30 07:00:00", "2017-08-30 08:00:00", "2017-08-31 07:00:00", "2017-08-31 08:00:00", "2017-08-29 21:00:00", "2017-08-28 21:00:00"],
                   'difference': [2, 13, 22, 2, -33, 44]})
Run Code Online (Sandbox Code Playgroud)

我想创建一个名为difference(我把它放在那里作为插图)的新列,这样它就相等:

  • 该行的得分值 - 该组前一天同一小时的得分值

例如,第 3 行中的差异等于:该行中的分数 -08:00:00该组(即月亮)的前一天(30 日)的分数,即15 - 13 = 2。如果前一天和同一时间不存在,则取该行的分数值(例如,在第 0 行,时间2017-08-30 07:00:00没有2017-08-29 07:00:00,因此只取 2)。

我写了以下内容:

df['datetime'] = pd.to_datetime(df['datetime'])
before = df['datetime'] - pd.DateOffset(days=1)

df['difference'] = df.groupby(["group", …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

使用 Pandas 生成 3D“矩阵”,基于比较两个数据帧 [Python]

大家,早安。我正在使用 Python 和 Pandas。

我有两个数据帧,类型如下:

df_C = pd.DataFrame(data=[[-3,-1,-1], [5,3,3], [3,3,1], [-1,-1,-3], [-3,-1,-1], [2,3,1], [1,1,1]], columns=['C1','C2','C3'])

   C1  C2  C3
0  -3  -1  -1
1   5   3   3
2   3   3   1
3  -1  -1  -3
4  -3  -1  -1
5   2   3   1
6   1   1   1


df_F = pd.DataFrame(data=[[-1,1,-1,-1,-1],[1,1,1,1,1],[1,1,1,-1,1],[1,-1,-1,-1,1],[-1,0,0,-1,-1],[1,1,1,-1,0],[1,1,-1,1,-1]], columns=['F1','F2','F3','F4','F5'])

   F1  F2  F3  F4  F5
0  -1   1  -1  -1  -1
1   1   1   1   1   1
2   1   1   1  -1   1
3   1  -1  -1  -1   1
4 …
Run Code Online (Sandbox Code Playgroud)

python numpy python-3.x pandas

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