相关疑难解决方法(0)

如何制作好的可重复的熊猫示例

花了相当多的时间观察SO上的标签,我得到的印象是pandas问题不太可能包含可重现的数据.这是值得的R社会一直要鼓励不错,并感谢像导游这样,新人能得到放在一起,这些例子一些帮助.能够阅读这些指南并返回可重现数据的人通常会更好地获得他们问题的答案.

我们如何为pandas问题创建良好的可重复示例?简单的数据帧可以放在一起,例如:

import pandas as pd
df = pd.DataFrame({'user': ['Bob', 'Jane', 'Alice'], 
                   'income': [40000, 50000, 42000]})
Run Code Online (Sandbox Code Playgroud)

但是许多示例数据集需要更复杂的结构,例如:

  • datetime 指数或数据
  • 多个分类变量(是否等价于R的expand.grid()函数,它会产生某些给定变量的所有可能组合?)
  • MultiIndex或Panel数据

对于dput()难以使用几行代码进行模拟的数据集,是否有与R相当的R ,它允许您生成可复制粘贴的代码以重新生成数据结构?

python pandas

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

查找每行具有前3个最大值的列名称

例如,数据如下所示:

df={'a1':[5,6,3,2,5],'a2':[23,43,56,2,6], 'a3':[4,2,3,6,7], 'a4':[1,2,1,3,2],'a5':[4,98,23,5,7],'a6':[5,43,3,2,5]}
x=pd.DataFrame(df)
Out[260]: 
    a1  a2  a3  a4  a5  a6
0   5  23   4   1   4   5
1   6  43   2   2   98   43
2   3  56   3   1  23   3
3   2   2   6   3   5   2
4   5   6   7   2   7   5
Run Code Online (Sandbox Code Playgroud)

我需要结果看起来像:

top1 top2 top3
a2   a1   a6
a5   a2   a6
....
Run Code Online (Sandbox Code Playgroud)

我已经看到了建议idxmax的先前问题的答案(见下文)。但是如何处理前n个值(n> 1)?

查找具有每一行最大值的列名

更新:

我发现答案非常有用,但唯一的问题是我的数据很长,因此必须找出一种绕过该问题的方法。我最终将数据保存到一个csv文件中,然后分块读取。这是我使用的代码:

data = pd.read_csv('xxx.csv', chunksize=1000)
rslt = pd.DataFrame(np.zeros((0,3)), columns=['top1','top2','top3'])
for chunk in data:
    x=pd.DataFrame(chunk).T
    for i in x.columns: …
Run Code Online (Sandbox Code Playgroud)

python

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

查找每行具有第二个最大值的列名(pandas)

根据这篇文章:Find the column name which has the max value for every row,很清楚如何使用 获取具有每行最大值的列名称df.idxmax(axis=1)

问题是,如何获得每行的第二个、第三个等等最大值?

python dataframe pandas

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

Pandas DataFrame,获取行中的3个最大值及其列名

论坛上有很多例子,如何找到具有相应列名的行的最大值。一些例子在这里这里

我想做的是对上面的例子进行一些具体的修改。我的数据框看起来像这样,其中所有列都是从左到右编号的(这个顺序非常重要):

x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10
  0   0   1   2   2   0   0   0   0    0
  4   4   0   4   4   1   0   0   0    0
  0   0   1   2   3   0   0   0   0    0
Run Code Online (Sandbox Code Playgroud)

现在,我想在每行末尾创建 6 个新列,其中包含列名称和行中的最大值。

x_1 x_2 x_3 x_4 x_5 x_6 x_7 x_8 x_9 x_10 Max1 ValMax1 Max2 ValMax2 Max3 ValMax3
  0   0   1   2   2   0   0   0   0    0
  4   4   0   4   4   1 …
Run Code Online (Sandbox Code Playgroud)

max dataframe pandas argmax

4
推荐指数
2
解决办法
159
查看次数

查找具有最高值的列(熊猫)

我有一个 Pandas 数据框,其中有几列的范围从 0 到 100。我想在数据框中添加一列,其中包含每行具有最大值的列的名称。所以:

one   two   three four  COLUMN_I_WANT_TO_CREATE
5     40    12    19    two
90    15    58    23    one
74    95    34    12    two
44    81    22    97    four
10    59    59    44    [either two or three, selected randomly]
Run Code Online (Sandbox Code Playgroud)

等等。

如果解决方案可以随机解决关系,则加分。

python dataframe pandas

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

对于每一行,返回最小值的列名称 - pandas

我试图找到pandas相当于这个问题.

对于每一行,返回最大值的列名

我想在下面的数据框中添加一个新列,这是每行中最低值的列名.

   Multi-Use  Charging  Performer  Controls  Value for Money  All Rounder
0   1.569541  0.290916   2.396734  0.881500         3.171563     1.950175
1   0.906542  2.296172   0.162809  1.604936         0.730633     0.532835
2   0.442924  0.970764   1.264364  0.295140         2.034826     0.824529
3   0.167663  1.367973   0.877306  0.683562         1.653964     0.444136
4   0.870290  0.547844   1.703054  0.209975         2.476787     1.260371
Run Code Online (Sandbox Code Playgroud)

得到min很简单: df.iloc[:, 0:6].min(axis=1)

如何根据min返回列名?

python dataframe pandas

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

pandas DataFrame中最大值对应的列名

对于以下数据框数据:

x  y  a b c 
2  6 12 1 2
1  2  4 6 8
Run Code Online (Sandbox Code Playgroud)

我想要新列(即 d)的结果,该列仅在 a、b、c 之间返回具有最大值的列名称。

cols
a
c
Run Code Online (Sandbox Code Playgroud)

我试图从三列中找到最大值并返回列名。但是我不想选择数据集的所有行,而是只选择这三列的行。我使用以下代码:

def returncolname(row, colnames):
    return colnames[np.argmax(row.values)]
data['colmax'] = data.apply(lambda x: returncolname(x, data.columns), axis=1)
Run Code Online (Sandbox Code Playgroud)

python dataframe python-3.x pandas

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

将多个虚拟变量转换为一列

我想转换一个看起来像这样的表:

            Blue    Green    Red
Thing 1     No      Yes      No
Thing 2     Yes     No       No
Thing 3     Yes     No       No
Run Code Online (Sandbox Code Playgroud)

进入这种风格:

            Color
Thing 1     Green
Thing 2     Blue
Thing 3     Blue
Run Code Online (Sandbox Code Playgroud)

在 python 或 Pandas 中有没有一个很好的方法来做到这一点?这些表格样式有名称吗?

python pandas

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

如何返回 Pandas Dataframe 中该行包含最大值的列标题

我正在开发一个具有如下 DataFrame 的 Python 项目:

data = {'AAA':  [3, 8, 2, 1],
        'BBB':  [5, 4, 7, 2],
        'CCC':  [2, 5, 6, 4]}
df = pd.DataFrame(data)
Run Code Online (Sandbox Code Playgroud)

这导致:

AAA 血脑屏障 CCC
0 3 5 2
1 8 4 5
2 2 7 6
3 1 2 4

该任务包括生成以下 DataFrame:

AAA 血脑屏障 CCC 角色
0 3 5 2 血脑屏障
1 8 4 5 AAA
2 2 7 6 血脑屏障
3 1 2 4 CCC

其中“角色”列元素是其所在行中具有最高值的列标题。

您能帮我建议一个解决此任务的代码吗?

python data-manipulation dataframe pandas

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

标签 统计

pandas ×8

python ×8

dataframe ×6

argmax ×1

data-manipulation ×1

max ×1

python-3.x ×1