小编yse*_*rka的帖子

将列表设置为pandas数据帧的列中的值

假设我有一个数据帧df,我想创建一个填充0的新列,我使用:

df['new_col'] = 0
Run Code Online (Sandbox Code Playgroud)

这个,没问题.但是,如果我想使用的值是一个列表,它不起作用:

df['new_col'] = my_list

ValueError: Length of values does not match length of index
Run Code Online (Sandbox Code Playgroud)

我理解为什么这不起作用(pandas试图为列的每个单元格分配一个列表值),但是我们怎样才能避免这种行为呢?(如果不清楚我希望我的新列的每个单元格都包含相同的预定义列表)

注意:我也试过:df.assign(new_col = my_list),同样的问题

python list pandas

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

将大数量放入numpy数组中

我有一个数据集,我正在尝试应用一些算术方法.问题是它给了我相对较大的数字,当我用numpy做它时,它们的库存为0.

奇怪的是,当我计算数字appart时,它们有一个int值,当我使用numpy计算它们时它们只变为零.

x = np.array([18,30,31,31,15])
10*150**x[0]/x[0]
Out[1]:36298069767006890

vector = 10*150**x/x
vector
Out[2]: array([0, 0, 0, 0, 0])
Run Code Online (Sandbox Code Playgroud)

我当然检查了他们的类型:

type(10*150**x[0]/x[0]) == type(vector[0])
Out[3]:True
Run Code Online (Sandbox Code Playgroud)

如何使用numpy计算这个大数字而不将它们变成零?

请注意,如果我们在开始时删除因子10,那么问题就会发生变化(但我认为这可能是一个类似的原因):

x = np.array([18,30,31,31,15])
150**x[0]/x[0]
Out[4]:311075541538526549

vector = 150**x/x
vector
Out[5]: array([-329406144173384851, -230584300921369396, 224960293581823801,
   -224960293581823801, -368934881474191033])
Run Code Online (Sandbox Code Playgroud)

负数表示python中的int64类型的最大数字是否已经交叉不是吗?

python arrays largenumber numpy

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

按整数索引选择并修改pandas数据帧中的切片

我有一个如下数据框:

df = pd.DataFrame([[1,2],[10,20],[10,2],[1,40]],columns = ['a','b'])
    a   b
0   1   2
1   10  20
2   10  2
3   1   40
Run Code Online (Sandbox Code Playgroud)

我想选择b列在哪里a == 1,以下是经典选择:

df[df.a == 1].b
    a   b
0   1   2
3   1   40
Run Code Online (Sandbox Code Playgroud)

然后我想选择这个子数据帧的第i行,这不是索引为i的行.还有几种方法,如下所示:

df[df.a == 1].b.iloc[[1]]
Output: 
3    40
Name: b, dtype: int64
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.问题是当我尝试修改我到达那里的值时,实际上这个选择方法会产生数据帧切片的副本,而不是对象本身.因此我无法在原地进行修改.

test[test.a == 1].b.iloc[[1]] = 3
SettingWithCopyWarning:
A value is trying to be set on a copy of a slice from a DataFrame
Run Code Online (Sandbox Code Playgroud)

我不知道"复制"问题在哪个部分,因为以下两个产生同样的问题:

test.iloc[[3]].b = 3
test[test.a == 1].b = …
Run Code Online (Sandbox Code Playgroud)

python indexing pandas

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

如何有效地比较pandas DataFrame中的行?

我有一个pandas数据帧,其中包含时间戳和全球位置的雷击记录,格式如下:

Index      Date      Time                        Lat      Lon         Good fix?
0          1         20160101  00:00:00.9962692  -7.1961  -60.7604    1
1          2         20160101  00:00:01.0646207  -7.0518  -60.6911    1
2          3         20160101  00:00:01.1102066 -25.3913  -57.2922    1
3          4         20160101  00:00:01.2018573  -7.4842  -60.5129    1
4          5         20160101  00:00:01.2942750  -7.3939  -60.4992    1
5          6         20160101  00:00:01.4431493  -9.6386  -62.8448    1
6          8         20160101  00:00:01.5226157 -23.7089  -58.8888    1
7          9         20160101  00:00:01.5932412  -6.3513  -55.6545    1
8          10        20160101  00:00:01.6736350 -23.8019  -58.9382    1
9          11        20160101  00:00:01.6957858 -24.5724  -57.7229    1
Run Code Online (Sandbox Code Playgroud)

实际数据框包含数百万行.我希望将在空间和时间上发生的事件与其他事件分开,并将它们存储在新的数据框中isolated_fixes …

python numpy pandas

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

在大熊猫的变换中应用几个函数

在 a 之后groupby,使用时agg,如果columns:functions传递了一个 dict ,则函数将应用到相应的列中。然而,这种语法不适用于transform. 还有另一种方法可以在 中应用多个函数transform吗?

让我们举一个例子:

import pandas as pd
df_test = pd.DataFrame([[1,2,3],[1,20,30],[2,30,50],[1,2,33],[2,4,50]],columns = ['a','b','c'])
Out[1]:
    a   b   c
0   1   2   3
1   1   20  30
2   2   30  50
3   1   2   33
4   2   4   50

def my_fct1(series):
    return series.mean()

def my_fct2(series):
    return series.std()

df_test.groupby('a').agg({'b':my_fct1,'c':my_fct2})

Out[2]:
    c   b
a       
1   16.522712   8
2   0.000000    17
Run Code Online (Sandbox Code Playgroud)

前面的例子展示了如何将不同的函数应用于 中的不同列agg,但是如果我们想转换列而不聚合它们,agg就不能再使用了。所以:

df_test.groupby('a').transform({'b':np.cumsum,'c':np.cumprod})
Out[3]:
TypeError: unhashable …
Run Code Online (Sandbox Code Playgroud)

python transformation pandas

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

标签 统计

python ×5

pandas ×4

numpy ×2

arrays ×1

indexing ×1

largenumber ×1

list ×1

transformation ×1