小编Sco*_*ton的帖子

将Pandas Series作为列追加到DataFrame

我有像['key','col1','col2','col3']之类的panadas数据框(df),并且我的pandas系列(sr)的索引与数据框中的'key'相同。我想用相同的“键”将系列附加到名为col4的新列的数据框中。我有以下代码:

for index, row in segmention.iterrows():    
     df[df['key']==row['key']]['col4']=sr.loc[row['key']]
Run Code Online (Sandbox Code Playgroud)

代码很慢。我认为应该有更有效,更好的方法来做到这一点。能否请你帮忙?

series pandas

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

Seaborn 中的堆积条形图

我有以下数据:

countries2012 = [
    'Bolivia',
    'Brazil',
    'Sri Lanka',
    'Dominican Republic',
    'Indonesia',
    'Kenya',
    'Honduras',
    'Mozambique',
    'Peru',
    'Philipines',
    'India',
    'Vietnam',
    'Thailand',
    'USA',
    'World'
]

percentage2012 = [ 
    0.042780099,
    0.16599952,
    0.012373058,
    0.019171717,
    0.011868674,
    0.019239173,
    0.00000332,
    0.014455196,
    0.016006654,
    0.132970981,
    0.077940824,
    0.411752517,
    0.017986798,
    0.017361808,
    0.058076027
]

countries2013 = [
    'Bolivia',
    'Brazil',
    'Sri Lanka',
    'Dominican Republic', 
    'Indonesia', 
    'Honduras',
    'Mozambique', 
    'Peru', 
    'Philippines', 
    'India', 
    'Vietnam', 
    'Thailand', 
    'USA',
    'World'  
]

percentage2013 = [
    0.02736294,
    0.117160272, 
    0.015815952 ,
    0.018831589,
    0.020409103 ,
    0.00000000285,
    0.018876854,
    0.018998639,
    0.117221146,
    0.067991687,
    0.496110972,
    0.019309486,
    0.026880553,
    0.03503080414999993 …
Run Code Online (Sandbox Code Playgroud)

matplotlib seaborn

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

如何将数据帧转换为json字符串并对此字符串应用一些转换?

我想将我的数据帧转换为json字符串.如果我只是这样做df.to_json(orient='records'),那么它转换得很好.但是,我想在json字符串中进行几次转换.

这是我的数据帧df:

df = 
GROUP   HOUR    AVG_MINUTES   AVG_GRADE
AAA     7       67            5.5
AAA     8       58            6.5
AAA     9       55            4.5
BBB     7       15            5.1
BBB     8       18            5.4
CCC     9       34            5.5
Run Code Online (Sandbox Code Playgroud)

json字符串应如下所示:

[
{
"GROUP":"AAA",
"AVG_MINUTES":[[7,67],[8,58],[9,55]],
"AVG_GRADE":[[7,5.5],[8,6.5],[9,4.5]]
},
{
"GROUP":"BBB",
"AVG_MINUTES":[[7,15],[8,18],[9,34]],
"AVG_GRADE":[[7,5.1],[8,5.4],[9,5.5]]
}
]
Run Code Online (Sandbox Code Playgroud)

我希望HOURAVG_MINUTES和中得到每对内的值AVG_GRADE.有可能吗?或者我应该手动完成吗?(这将是一个坏消息,因为数据帧非常大)

python json pandas

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

如何使用 python 对列进行分组并获取另一列值的最大值并返回整行

df = pd.DataFrame([[1.1, 1.1, 1.1, 2.6, 2.5, 3.4,2.6,2.6,3.4,3.4,2.6,1.1,1.1,3.3], list('AAABBBBABCBDDD'), [1.1, 1.7, 2.5, 2.6, 3.3, 3.8,4.0,4.2,4.3,4.5,4.6,4.7,4.7,4.8], ['x/y/z','x/y','x/y/z/n','x/u','x','x/u/v','x/y/z','x','x/u/v/b','-','x/y','x/y/z','x','x/u/v/w'],['1','4','3','2','4','2','5','3','6','3','5','1','2','5']]).T

df.columns = ['col1','col2','col3','col4','col5']

df

   col1 col2 col3     col4 col5
0   1.1    A  1.1    x/y/z    1
1   1.1    A  1.7      x/y    4
2   1.1    A  2.5  x/y/z/n    3
3   2.6    B  2.6      x/u    2
4   2.5    B  3.3        x    4
5   3.4    B  3.8    x/u/v    2
6   2.6    B    4    x/y/z    5
7   2.6    A  4.2        x    3
8   3.4    B  4.3  x/u/v/b    6
9 …
Run Code Online (Sandbox Code Playgroud)

python-3.x pandas

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

无法标记多行 sns.catplot()

这是我的源代码:

plot = sns.catplot(x='Year',
                   y='Graduation Rate',
                   col='Group',
                   hue='Campus',
                   kind='bar',
                   col_wrap=4,
                   data=mbk_grad.sort_values(['Group', 'Campus']))

for i in np.arange(2):
    for j in np.arange(4):
        ax = plot.facet_axis(i,j) 
        for p in ax.patches:
            if str(p.get_height()) != 'nan':
                ax.text(p.get_x() + 0.06, p.get_height() * .8, '{0:.2f}%'.format(p.get_height()), color='white', rotation='vertical', size='large')

plt.show()
Run Code Online (Sandbox Code Playgroud)

输出如下:

在此处输入图片说明

如何在第一个标记为第一行之后获取行?为什么我的嵌套 for 循环不起作用?

python matplotlib seaborn

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

Pandas 在列之间找到具有相反值的重复项

在 A 列中的值与 B 列中的值相反的情况下,查找重复项的最快方法是什么?

例如,如果我有一个 DataFrame :

     Column A           Column B
0           C                  P
1           D                  C
2           L                  G
3           A                  D
4           B                  P
5           B                  G
6           P                  B
7           J                  T
8           P                  C
9           J                  T
Run Code Online (Sandbox Code Playgroud)

结果将是:

     Column A           Column B
0           C                  P
8           P                  C
4           B                  P
6           P                  B
Run Code Online (Sandbox Code Playgroud)

我试过 :

df1 = df
df2 = df
for i in df2.index:
     res = df1[(df1['Column A'] == df2['Column A'][i]) & (df1['Column …
Run Code Online (Sandbox Code Playgroud)

python inversion dataframe pandas

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

熊猫:在保留重复项时填充缺失的日期

我有一个简单的pandas系列:

import pandas as pd

quantities = [1, 14, 14, 11, 12, 13, 14]
timestamps = [pd.Timestamp(2015, 4, 1), pd.Timestamp(2015, 4, 1), pd.Timestamp(2015, 4, 2), pd.Timestamp(2015, 4, 3), pd.Timestamp(2015, 4, 4), pd.Timestamp(2015, 4, 5), pd.Timestamp(2015, 4, 8)]
series = pd.Series(quantities, index=timestamps)
Run Code Online (Sandbox Code Playgroud)

如下所示:

2015-04-01     1
2015-04-01    14
2015-04-02    14
2015-04-03    11
2015-04-04    12
2015-04-05    13
2015-04-08    14
dtype: int64
Run Code Online (Sandbox Code Playgroud)

我想填写缺少的日期,即2015-04-06 = NaN2015-04-07 = NaN但保持系列原样,即:

2015-04-01     1
2015-04-01    14
2015-04-02    14
2015-04-03    11
2015-04-04    12
2015-04-05 …
Run Code Online (Sandbox Code Playgroud)

python pandas

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

pandas 将多列堆叠成多列

我有一个 6k 列宽的数据框,格式为:

import pandas as pd
df = pd.DataFrame([('jan 1 2000','a','b','c',1,2,3,'aa','bb','cc'), ('jan 2 2000','d', 'e', 'f', 4, 5, 6, 'dd', 'ee', 'ff')],
                  columns=['date','a_1', 'a_2', 'a_3','b_1', 'b_2', 'b_3','c_1', 'c_2', 'c_3'])

df
    date         a_1  a_2  a_3  b_1  b_2  b_3  c_1  c_2  c_3
0   jan 1 2000   a    b    c    1    2    3    aa   bb   cc
1   jan 2 2000   d    e    f    4    5    6    dd   ee   ff
Run Code Online (Sandbox Code Playgroud)

我想:

在此输入图像描述

我看过: Pandas 按名称将几组列融化成多个目标列Pandas:多列合并成一列,但无法形成正确的解决方案。

任何建议表示赞赏

dataframe pandas

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

将多索引列转换为标准列

我们如何转换包含 MultiIndex 列的 Pandas DataFrame,例如

                FB                  AAPL
                open    volume      open    volume
date
2019-10-30      189.56  28734995    244.76  31130522
2019-10-31      196.70  42286529    247.24  34790520
2019-11-01      192.85  21711829    249.54  37781334
Run Code Online (Sandbox Code Playgroud)

到一个具有常规列的索引,其中索引级别之一现在是所有行中的一列

                open    volume      ticker  
date
2019-10-30      189.56  28734995    FB      
2019-10-31      196.70  42286529    FB      
2019-11-01      192.85  21711829    FB      
2019-10-30      244.76  31130522    AAPL
2019-10-31      247.24  34790520    AAPL
2019-11-01      249.54  37781334    AAPL
Run Code Online (Sandbox Code Playgroud)

python multi-index python-3.x pandas

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

我应该堆叠、旋转还是分组?

我仍在学习如何使用数据框,但仍然无法做到这一点......我得到了这样的数据框:

A  B  C  D1 D2 D3
1  2  3  5  6  7 
Run Code Online (Sandbox Code Playgroud)

我需要它看起来像:

A  B  C  DA D 
1  2  3  D1 5 
1  2  3  D2 6 
1  2  3  D3 7 
Run Code Online (Sandbox Code Playgroud)

我知道我应该使用 groupby 之类的东西,但我仍然找不到好的文档。

python-3.x pandas pandas-datareader pandas-groupby

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