小编Bri*_*ian的帖子

如何将数据框转换为一系列列表?

我不得不这样做几次,我总是感到沮丧.我有一个数据帧:

df = pd.DataFrame([[1, 2, 3, 4], [5, 6, 7, 8]], ['a', 'b'], ['A', 'B', 'C', 'D'])

print df

   A  B  C  D
a  1  2  3  4
b  5  6  7  8
Run Code Online (Sandbox Code Playgroud)

我想df变成:

pd.Series([[1, 2, 3, 4], [5, 6, 7, 8]], ['a', 'b'])

a    [1, 2, 3, 4]
b    [5, 6, 7, 8]
dtype: object
Run Code Online (Sandbox Code Playgroud)

我试过了

df.apply(list, axis=1)
Run Code Online (Sandbox Code Playgroud)

哪个让我回来了 df

这样做的方便/有效方法是什么?

python list series dataframe pandas

20
推荐指数
2
解决办法
2208
查看次数

pandas将浮点数转换为不带小数的字符串

我有一个数据帧

df = pd.DataFrame([
        ['2', '3', 'nan'],
        ['0', '1', '4'],
        ['5', 'nan', '7']
    ])

print df

   0    1    2
0  2    3  nan
1  0    1    4
2  5  nan    7
Run Code Online (Sandbox Code Playgroud)

我想将这些字符串转换为数字并对列求和并转换回字符串.

使用astype(float)似乎让我到数字部分.然后总结很简单sum().然后回到字符串也应该很容易astype(str)

df.astype(float).sum().astype(str)

0     7.0
1     4.0
2    11.0
dtype: object
Run Code Online (Sandbox Code Playgroud)

这几乎就是我想要的.我想要整数的字符串版本.但浮点数有小数.我怎么摆脱他们?

我要这个

0     7
1     4
2    11
dtype: object
Run Code Online (Sandbox Code Playgroud)

python pandas

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

获取groupby中的第一个和最后一个值

我有一个数据帧 df

df = pd.DataFrame(np.arange(20).reshape(10, -1),
                  [['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
                   ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
                  ['X', 'Y'])
Run Code Online (Sandbox Code Playgroud)

如何获取按索引第一级分组的第一行和最后一行?

我试过了

df.groupby(level=0).agg(['first', 'last']).stack()
Run Code Online (Sandbox Code Playgroud)

得到了

          X   Y
a first   0   1
  last    6   7
b first   8   9
  last   12  13
c first  14  15
  last   16  17
d first  18  19
  last   18  19
Run Code Online (Sandbox Code Playgroud)

这非常接近我想要的.如何保留1级索引并改为:

      X   Y
a a   0   1
  d   6   7
b e   8   9
  g  12  13 …
Run Code Online (Sandbox Code Playgroud)

python group-by dataframe pandas pandas-groupby

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

第二级多索引的时间片

pandas允许对时间索引进行冷切片.例如,我可以df通过以下方式切割2012年1月至2012年3月的数据帧:

df['2012-01':'2012-03']
Run Code Online (Sandbox Code Playgroud)

但是,我有一个df带有multiindex 的数据帧,其中时间索引是第二级.看起来像:

                     A         B         C         D         E
a 2001-01-31  0.864841  0.789273  0.370031  0.448256  0.178515
  2001-02-28  0.991861  0.079215  0.900788  0.666178  0.693887
  2001-03-31  0.016674  0.855109  0.984115  0.436574  0.480339
  2001-04-30  0.120924  0.046013  0.659807  0.210534  0.694029
  2001-05-31  0.788149  0.296244  0.478201  0.845042  0.437814
b 2001-01-31  0.497646  0.349958  0.223227  0.812331  0.975012
  2001-02-28  0.542572  0.472267  0.276186  0.970909  0.138683
  2001-03-31  0.960813  0.666942  0.069349  0.282741  0.127992
  2001-04-30  0.491422  0.678742  0.048784  0.612312  0.713472
  2001-05-31  0.718721  0.504403  0.069047  0.253682  0.836386
Run Code Online (Sandbox Code Playgroud)

我仍然可以通过以下方式在任何特定级别使用上述方法切片:

df.loc['a']['2012-01':'2012-03']
Run Code Online (Sandbox Code Playgroud)

但这只是为了level0 == …

python multi-index pandas datetimeindex

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

如何找到分位数的索引

我正在使用熊猫系列,我想找到代表分位数的索引值。

如果我有:

np.random.seed(8)
s = pd.Series(np.random.rand(6), ['a', 'b', 'c', 'd', 'e', 'f'])
s

a    0.873429
b    0.968541
c    0.869195
d    0.530856
e    0.232728
f    0.011399
dtype: float64
Run Code Online (Sandbox Code Playgroud)

并且做

s.quantile(.5)
Run Code Online (Sandbox Code Playgroud)

我得到

0.70002511588475946
Run Code Online (Sandbox Code Playgroud)

我想知道的是s代表该分位数值之前的点的索引值是多少。在这种情况下,我知道索引值应该是d.

python pandas

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

一个数据帧与另一个数据帧的相关矩阵

我正在阅读这个问题的答案。然后出现了如何计算一个数据帧中所有列与另一数据帧中所有列的相关性的问题。因为这个问题似乎不会得到回答,所以我想问它,因为我需要类似的东西。

假设我有数据框A并且B

import pandas as pd
import numpy as np

A = pd.DataFrame(np.random.rand(24, 5), columns=list('abcde'))
B = pd.DataFrame(np.random.rand(24, 5), columns=list('ABCDE'))
Run Code Online (Sandbox Code Playgroud)

如何获得如下所示的数据框:

pd.DataFrame([], A.columns, B.columns)

     A    B    C    D    E
a  NaN  NaN  NaN  NaN  NaN
b  NaN  NaN  NaN  NaN  NaN
c  NaN  NaN  NaN  NaN  NaN
d  NaN  NaN  NaN  NaN  NaN
e  NaN  NaN  NaN  NaN  NaN
Run Code Online (Sandbox Code Playgroud)

但充满了适当的相关性?

python numpy dataframe pandas

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

从每个组中删除第一行和最后一行

这是获取 groupby 中的第一个和最后一个值的后续问题

如何删除每个组中的第一行和最后一行?

我有这个 df

df = pd.DataFrame(np.arange(20).reshape(10, -1),
                  [['a', 'a', 'a', 'a', 'b', 'b', 'b', 'c', 'c', 'd'],
                   ['a', 'a', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j']],
                  ['X', 'Y'])

df
Run Code Online (Sandbox Code Playgroud)

我故意使第二行与第一行具有相同的索引值。我无法控制索引的唯一性。

      X   Y
a a   0   1
  a   2   3
  c   4   5
  d   6   7
b e   8   9
  f  10  11
  g  12  13
c h  14  15
  i  16  17
d j  18  19
Run Code Online (Sandbox Code Playgroud)

我要这个

        X   Y
a b   2.0   3
  c …
Run Code Online (Sandbox Code Playgroud)

python group-by pandas

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

在组内联合非集迭代的有效方法

我有这个 df

df = pd.DataFrame(dict(
        A=['b', 'a', 'b', 'c', 'a', 'c', 'a', 'c', 'a', 'a'],
        B=[[0, 2, 3, 1],
           [9, 6, 7, 2],
           [6, 0, 1, 4],
           [9, 2, 5, 1],
           [5, 1, 4, 8],
           [8, 5, 6, 6],
           [0, 9, 0, 0],
           [2, 6, 1, 8],
           [7, 3, 2, 6],
           [8, 7, 1, 9]]
        ))
Run Code Online (Sandbox Code Playgroud)

我想分组'A'并联合所有列表'B'

既不工作df.groupby('A').B.union()也不df.groupby('A').B.apply(set.union)工作.

我想要结果

A
a    {0, 1, 2, 3, 4, 5, 6, 7, 8, 9}
b                {0, …
Run Code Online (Sandbox Code Playgroud)

python group-by pandas

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

如何反转列值并保持列标题不变

假设我有一个数据帧 df

df = pd.DataFrame([[1, 2, 3, 4, 5], [6, 7, 8, 9, 10]],
                  columns=['A', 'B', 'C', 'D', 'E'])
Run Code Online (Sandbox Code Playgroud)

看起来像这样

   A  B  C  D   E
0  1  2  3  4   5
1  6  7  8  9  10
Run Code Online (Sandbox Code Playgroud)

如何反转列值的顺序,但将列标题保留为A,B,C,D,E?

我希望它看起来像

    A  B  C  D  E
0   5  4  3  2  1
1  10  9  8  7  6
Run Code Online (Sandbox Code Playgroud)

我已经尝试对列索引进行排序,df.sort_index(1, ascending=False)但这会改变列标题(显然),而且,我不知道我的列是否以有序的方式开始.

python numpy dataframe pandas

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

如何用numpy模拟随机回报

什么是模拟随机回报的快捷方法.我知道numpy.random.但是,这并没有指导我如何模拟资产回报.

我试过了:

import numpy as np

r = np.random.rand(100)
Run Code Online (Sandbox Code Playgroud)

但这并不准确.其他人如何处理此事?

random numpy quantitative-finance dataframe

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