小编Myk*_*tko的帖子

用熊猫解析漂亮的表格数据

复制包含不同分隔符、列名中的空格等的表的最佳方法是什么。该函数pd.read_clipboard()无法自行管理此任务。

示例 1:

| Age Category | A | B  | C  | D |
|--------------|---|----|----|---|
| 21-26        | 2 | 2  | 4  | 1 |
| 26-31        | 7 | 11 | 12 | 5 |
| 31-36        | 3 | 5  | 5  | 2 |
| 36-41        | 2 | 4  | 1  | 7 |
| 41-46        | 0 | 1  | 3  | 2 |
| 46-51        | 0 | 0  | …
Run Code Online (Sandbox Code Playgroud)

python clipboard copy-paste pandas

5
推荐指数
3
解决办法
335
查看次数

Plotly 来自 Wavefront OBJ 文件的 Mesh3d 绘图

我正在尝试使用 Plotly 绘制腿部的 3D 扫描图Mesh3D

我使用scatter_3dXYZ 点来展示这个概念:

fig = px.scatter_3d(df, x='x', y='y', z='z', opacity = 0.8)
Run Code Online (Sandbox Code Playgroud)

Plotly XYZ 点的 3D 散点图

然而,它看起来并不像一个表面。因此,我尝试Mesh3d使用:

fig = go.Figure(data=[go.Mesh3d(x=x, y=y, z=z, color='lightpink', opacity=0.50)])
Run Code Online (Sandbox Code Playgroud)

绘制 XYZ 点的 3D 网格图

显然,这个剧情并不顺利。我尝试在渲染绘图之前对 df 进行排序,但没有帮助。

重申一下,我正在寻找该 XYZ 数据的平滑曲面图。

这是扫描的XYZ 数据

编辑:有关曲面图介绍的继续信息

我用下面的代码实现了曲面图。不幸的是,没有渲染任何图(也没有伴随错误)。

colnames = ['x', 'y', 'z']
df = pd.read_csv('sandbox\leg.txt', sep = ' ', header = None, names = colnames)
x, y = np.array(df['x'].tolist()), np.array(df['y'].tolist())
df2 = df.pivot(index = 'x', columns = 'y', values = 'z')
z = df2.values
fig …
Run Code Online (Sandbox Code Playgroud)

python 3d plot wavefront plotly

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

MultiHeadAttention 中的遮罩层与attention_mask 参数

我在变压器模型中使用MultiHeadAttention层(我的模型与命名实体识别模型非常相似)。因为我的数据具有不同的长度,所以我使用填充和attention_mask参数MultiHeadAttention来屏蔽填充。如果我使用Masking之前的图层,它会和参数MultiHeadAttention有相同的效果吗?attention_mask或者我应该同时使用:attention_maskMasking图层?

python transformer-model keras tensorflow

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

如何合并具有交集的集合(连通分量算法)?

是否有任何有效的方法来合并具有交集的集合。例如:

l = [{1, 3}, {2, 3}, {4, 5}, {6, 5}, {7, 5}, {8, 9}]
Run Code Online (Sandbox Code Playgroud)

预期的结果是:

r = [{1, 2, 3}, {4, 5, 6, 7}, {8, 9}]
Run Code Online (Sandbox Code Playgroud)

应合并所有具有交集(公共组件)的集合。例如:

{1, 3} & {2, 3}
# {3}
Run Code Online (Sandbox Code Playgroud)

所以这两组应该合并:

{1, 3} | {2, 3}
# {1, 2, 3}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我没有任何可行的解决方案。

更新:结果中集合的顺序并不重要。

python graph-theory set

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

如何使用pickle保存sklearn模型

我想使用 Pickle 转储和加载我的 Sklearn 训练模型。怎么做?

python pickle scikit-learn

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

如何将 CategoricalIndex 转换为普通索引

我有以下数据帧(方法的结果unstack):

df = pd.DataFrame(np.arange(12).reshape(2, -1),
                  columns=pd.CategoricalIndex(['a', 'b', 'c', 'a', 'b', 'c']))
Run Code Online (Sandbox Code Playgroud)

df 看起来像这样:

   a  b  c  a   b   c
0  0  1  2  3   4   5
1  6  7  8  9  10  11
Run Code Online (Sandbox Code Playgroud)

当我尝试时,df.reset_index()出现以下错误:

TypeError: cannot insert an item into a CategoricalIndex that is not already an existing category
Run Code Online (Sandbox Code Playgroud)

为了绕过这个问题,我想将列的索引从分类索引转换为普通索引。最直接的方法是什么?也许您知道如何在不进行索引转换的情况下重置索引。我有以下想法:

df.columns = list(df.columns)
Run Code Online (Sandbox Code Playgroud)

dataframe pandas

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

如何迭代所有字典组合

考虑我有以下字典:

someDict = {
  'A': [1,2,3],
  'B': [4,5,6],
  'C': [7,8,9]
}
Run Code Online (Sandbox Code Playgroud)

有没有一种简单的方法可以迭代为所有可能的组合创建新的字典,即?

{'A' : 1, 'B': 4, 'C':7}
{'A' : 1, 'B': 4, 'C':8}
{'A' : 1, 'B': 4, 'C':9}
{'A' : 2, 'B': 4, 'C':7}
Run Code Online (Sandbox Code Playgroud)

ETC

python combinations dictionary combinatorics

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

在 Pandas 中,如何识别具有共同值的记录并替换其中一个的值以匹配另一个?

我有一个包含三列的熊猫数据框:

a          b          c
Donaldson  Minnesota  2020
Ozuna      Atlanta    2020
Betts      Boston     2019
Donaldson  Atlanta    2019
Ozuna      St. Louis  2019
Torres     New York   2019
Run Code Online (Sandbox Code Playgroud)

我想识别具有多个列 c 值的所有列名称,然后将所有列 b 实例替换为数据框中的第一个值,如下所示:

a          b          c
Donaldson  Minnesota  2020
Ozuna      Atlanta    2020
Betts      Boston     2019
Donaldson  Minnesota  2019
Ozuna      Atlanta    2019
Torres     New York   2019
Run Code Online (Sandbox Code Playgroud)

这绝对是低效的,但这是我迄今为止尝试过的:

# get a df of just names and cities and deduplicate

df_names = df[['a','b']].drop_duplicates()


# find any multiple column b values and put them in a list

a_matches …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

迭代构建 Pandas DataFrame 的最佳方法

假设我有一个正在循环的算法。它将返回未知数量的结果,我想将它们全部存储在 DataFrame 中。例如:

df_results = pd.DataFrame(columns=['x', 'x_squared'])

x = 0
x_squared = 1

while x_squared < 100:
    x_squared = x ** 2

    df_iteration = pd.DataFrame(data=[[x,x_squared]], columns=['x', 'x_squared'])
    df_results = df_results.append(df_iteration, ignore_index=True)

    x += 1

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

输出:

     x  x_squared
0    0          0
1    1          1
2    2          4
3    3          9
4    4         16
5    5         25
6    6         36
7    7         49
8    8         64
9    9         81
10  10        100
Run Code Online (Sandbox Code Playgroud)

问题是当我想要进行大量迭代时。数学运算本身非常快。然而,当我们进行大循环时,数据帧的创建和附加变得非常慢。

我知道这个特定的例子可以很容易地解决,而无需在每次迭代中使用数据帧。但是想象一个复杂的算法,它还对数据帧等执行操作。对我来说,有时一步一步构建结果数据帧会更容易。哪种方法是最好的?

python dataframe pandas

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

计算每组前 n 行的总和

我想要做的是按 A 列分组,然后取前两行的总和,然后将该值分配为新列。下面的例子:

DF:

ColA   ColB
 AA      2
 AA      1
 AA      5
 AA      3
 BB      9
 BB      3
 BB      2
 BB      12
 CC      0
 CC      10
 CC      5
 CC      3
Run Code Online (Sandbox Code Playgroud)

期望的DF:

ColA   ColB    NewCol
 AA      2       3
 AA      1       3
 AA      5       3 
 AA      3       3
 BB      9       12
 BB      3       12
 BB      2       12
 BB      12      12
 CC      0       10
 CC      10      10 
 CC      5       10
 CC      3       10
Run Code Online (Sandbox Code Playgroud)

对于 AA,它查看 ColB 并取前两行的总和并将该总和值分配给 newCol。我已经尝试通过循环遍历唯一的 ColA 值来创建字典,创建前两行的子集数据框,求和,然后用值填充字典。然后将字典映射回来 - 但我的数据框非常大并且需要很长时间。有任何想法吗?

谢谢!

python dataframe pandas

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