小编moz*_*way的帖子

如何提取 Pandas 列中字符串的一部分并创建一个新列

我有下面的熊猫数据框。

d = {'col1': [1, 2,3,4,5,60,0,0,6,3,2,4],'col3': [1, 22,33,44,55,60,1,5,6,3,2,4],'Name': ['2a df a1asd_V1', 'xcd a2asd_V3','23vg aabsd_V1','dfgdf_aabsd_V0','a3as  d_V1','aa bsd_V3','aasd_V4','aabsd_V4','aa_adn sd_V15',np.nan,'aasd_V12','aasd120Abs'],'Date': ['2021-06-13', '2021-06-13','2021-06-13','2021-06-14','2021-06-15','2021-06-15','2021-06-13','2021-06-16','2021-06-13','2021-06-13','2021-06-13','2021-06-16']}
dff = pd.DataFrame(data=d)
dff

    col1    col3    Name            Date       
0   1       1       2a df a1asd_V1  2021-06-13 
1   2       22      xcd a2asd_V3    2021-06-13 
2   3       33      23vg aabsd_V1   2021-06-13 
3   4       44      dfgdf_aabsd_V0  2021-06-14 
4   5       55      a3as d_V1       2021-06-15 
5   60      60      aa bsd_V3       2021-06-15 
6   0       1       aasd_V4         2021-06-13 
7   0       5       aabsd_V4        2021-06-16 
8   6       6       aa_adn sd_V10   2021-06-13 
9 …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

Pandas 数据框与 axis=1 串联:丢失列名称

我正在尝试将两个数据帧与这些条件连接起来:

  1. 对于现有标题,附加到列;
  2. 否则添加新列。

代码可以运行,但在情况 2 中列名称丢失。为什么?Pandas 文档中似乎没有提到这一点。或者我错过了什么?

如何保留列名?

代码 :

# Testing
# Merge, join, concatenate
# Pandas documentation : https://pandas.pydata.org/pandas-docs/stable/user_guide/merging.html

df1 = pd.DataFrame(
    {
        "A": ["A0", "A1", "A2", "A3"],
        "B": ["B0", "B1", "B2", "B3"],
        "C": ["C0", "C1", "C2", "C3"],
        "D": ["D0", "D1", "D2", "D3"],
    },
    #index=[0, 1, 2, 3],
)

df2 = pd.DataFrame(
    {
        "A": ["A4", "A5", "A6", "A7"],
        "B": ["B4", "B5", "B6", "B7"],
        "C": ["C4", "C5", "C6", "C7"],
        "D": ["D4", "D5", "D6", "D7"],
    },
    #index=[4, 5, 6, 7], …
Run Code Online (Sandbox Code Playgroud)

python concatenation dataframe pandas

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

将一个列表的嵌套形状应用到另一个平面列表上

我有两个清单:

A:[[0, 1], [2, [3]], 4]

乙:[5, 6, 7, 8, 9]

我希望列表 B 可以与列表 A 具有相同的形状: [5, 6, 7, 8, 9]=>[[5, 6], [7, [8]], 9]

因此列表 A 和列表 B 具有相同的维度/形状:

A:[[0, 1], [2, [3]], 4]

乙:[[5, 6], [7, [8]], 9]

考虑一下时间复杂度,如果可能的话,希望有一种O(n)的方法。

python arrays algorithm nested list

6
推荐指数
2
解决办法
168
查看次数

如何在特殊表单中添加行

我有一个pandas.DataFrame表格

index     df      df1

0         0       111
1         1       111
2         2       111
3         3       111
4         0       111
5         2       111
6         3       111
7         0       111
8         2       111
9         3       111
10        0       111
11        1       111
12        2       111
13        3       111
14        0       111
15        1       111
16        2       111
17        3       111
18        1       111
19        2       111
20        3       111
Run Code Online (Sandbox Code Playgroud)

我想创建一个数据框,其中df列重复 0,1,2,3。但数据中缺少一些东西。我试图通过附加行值来用 0 填充空白。这是我的预期结果:

index     df      df1

0         0 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

删除符号和重复数字

我想删除我的所有标志,dataframe将其保留为两种格式之一:100-200200

\n

因此,如果给出了一系列工资,则工资之间应该有一个连字符,否则是一个干净的单个数字。

\n

我有以下数据:

\n
import pandas as pd\nimport re\ndf = {'salary':['\xc2\xa326,768 - \xc2\xa330,136/annum Attractive benefits package',\n           '\xc2\xa326,000 - \xc2\xa328,000/annum plus bonus',\n           '\xc2\xa321,000/annum',\n           '\xc2\xa326,768 - \xc2\xa330,136/annum Attractive benefits package',\n           '\xc2\xa333/hour', \n           '\xc2\xa318,500 - \xc2\xa320,500/annum Inc Bonus - Study Support + Bens',\n           '\xc2\xa327,500 - \xc2\xa330,000/annum \xc2\xa327,500 to \xc2\xa330,000 + Study',\n           '\xc2\xa335,000 - \xc2\xa340,000/annum',\n           '\xc2\xa324,000 - \xc2\xa327,000/annum Study Support (ACCA / CIMA)',\n           '\xc2\xa319,000 - \xc2\xa324,000/annum Study Support',\n           '\xc2\xa330,000 - \xc2\xa335,000/annum', \n           '\xc2\xa344,000 - \xc2\xa366,000/annum + 15% …
Run Code Online (Sandbox Code Playgroud)

python regex string dataframe pandas

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

从连接组件列表生成图形

设置

我们假设以下无向图:

import networkx as nx

G = nx.from_edgelist([(0, 3), (0, 1), (2, 5), (0, 3)])
G.add_nodes_from(range(7))
Run Code Online (Sandbox Code Playgroud)

图形

甚至添加 (1, 3) 边(这里并不重要):

在此输入图像描述

连接的组件是:

list(nx.connected_components(G))
# [{0, 1, 3}, {2, 5}, {4}, {6}]
Run Code Online (Sandbox Code Playgroud)
问题

是否可以G直接从连接组件列表生成图形networkx?或者使用简单的方法?

到目前为止,我发现的唯一解决方案是生成每组的连续边或节点的所有组合并将其提供给nx.from_edgelist,然后使用以下命令添加单个节点add_nodes_from

from itertools import pairwise, chain

l = [{0, 1, 3}, {2, 5}, {4}, {6}]

G = nx.from_edgelist(chain.from_iterable(pairwise(e) for e in l))
G.add_nodes_from(set.union(*l))
Run Code Online (Sandbox Code Playgroud)

或对于所有边:

from itertools import combinations, chain

l = [{0, 1, 3}, {2, 5}, {4}, {6}]

G …
Run Code Online (Sandbox Code Playgroud)

python graph-theory networkx connected-components

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

以正确的顺序对染色体列表进行排序

这是一个看似简单的问题,但事实证明有点令人烦恼。我有一个染色体列表(有 23 条染色体 - 染色体 1 到 21,然后是染色体 X 和染色体 Y),如下所示:

['chr11','chr14','chr16','chr13','chr4','chr13','chr2','chr1','chr2','chr3','chr14','chrX',]

我想按以下顺序对其进行排序:

['chr1', 'chr2','chr2','chr3','chr4','chr11','chr13','chr13', 'chr14','chr14','chr16','chrX']

然而,由于 python 的字典顺序性质,sort它会进行排序chr1, chr10, chr11, chr12...chr2,等,因为我有 X 染色体,按整数值排序似乎也不是一个选项。我可能需要指定一个唯一的键来对列表进行排序吗?或者我缺少某种明显的解决方案。

python sorting list

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

如何找到数据框中的循环

我的目标是找出以下 df 是否有“循环”

给定:

df = pd.DataFrame({'From':['USA','UK','France','Italy','Russia','china','Japan','Australia','Russia','Italy'],
                  'to':['UK','France','Italy','Russia','china','Australia','New Zealand','Japan','USA','France']})
df
Run Code Online (Sandbox Code Playgroud)

如果我绘制它,它看起来像这样(最终,请注意 df 上的顺序是不同的):

USA-->UK-->France-->Italy-->Russia-->China-->Australia-->Japan-->Australia
                      |       |
                      |       |
                    France   USA
Run Code Online (Sandbox Code Playgroud)

关键是:你不能倒退,所以意大利不能去法国,俄罗斯不能去美国。

注意:From可以有多个Tos

我怎样才能在 pandas 中找到它,最终结果将如下所示:

我可以在没有 pandas 的情况下解决它(我得到df.to_dict('records')然后迭代以找到循环,然后返回到 pandas),但我希望留在 pandas 上。

python pandas

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

以不一致的间隔对 Python 列表进行切片

我有一家公司的股票价格清单。现在我想将列表拆分为多个间隔。我们将存储价格,如下所示:前 2 个元素,然后是接下来的 3 个元素,然后是 2 个元素,依此类推。

meta_stocks = [10, 9, 11, 15, 19, 22, 25, 11, 15, 17]
Run Code Online (Sandbox Code Playgroud)

输出

meta_stocks = [[10, 9],[11, 15, 19],[22, 25],[ 11, 15, 17]]
Run Code Online (Sandbox Code Playgroud)

我可以将列表拆分为每个项目 5 个,但无法进一步拆分

>>> [meta_stocks[i:i+interval2] for i in range(0, len(meta_stocks), interval2)]
>>> [[10, 9, 11, 15, 19], [22, 25, 11, 15, 17]]
Run Code Online (Sandbox Code Playgroud)

python list python-3.x

4
推荐指数
1
解决办法
318
查看次数

如何将 numpy 整数数组拆分为具有低于阈值的连续值的块

我有以下带有正整数的 numpy 数组,按升序排列:

import numpy as np

arr = np.array([222, 225, 227, 228, 230, 232, 241, 243, 244, 245, 252, 253, 258])
Run Code Online (Sandbox Code Playgroud)

我想将其分成几部分,其中在每个部分,每个数字与下一个数字的最大差异。2

因此以下数组应拆分为:

[[222], [225,227,228,230,232], [241, 243, 244, 245], [252, 253], [258]]
Run Code Online (Sandbox Code Playgroud)

我有什么想法可以实现这一目标吗?

python numpy

4
推荐指数
1
解决办法
93
查看次数