小编Hap*_*yPy的帖子

如何根据pandas中其他列的值计算新列 - python

假设我的数据框包含以下数据:

>>> df = pd.DataFrame({'a':['l1','l2','l1','l2','l1','l2'],
                       'b':['1','2','2','1','2','2']})
>>> df
    a       b
0  l1       1
1  l2       2
2  l1       2
3  l2       1
4  l1       2
5  l2       2
Run Code Online (Sandbox Code Playgroud)

l1应该对应,1l2应该对应2.我想创建一个新列' c',对于每一行,c = 1if a = l1b = 1(或a = l2b = 2).如果a = l1b = 2(或a = l2b = 1)然后c = 0.

生成的数据框应如下所示:

  a …
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

如何更新pandas中的现有数据框?

鉴于这两个数据框:

>>> df1 = pd.DataFrame({'c1':['a','a','b','b'], 'c2':['x','y','x','y'], 'val':0})
>>> df1
  c1 c2  val
0  a  x    0
1  a  y    0
2  b  x    0
3  b  y    0

>>> df2 = pd.DataFrame({'c1':['a','a','b'], 'c2':['x','y','y'], 'val':[12,31,14]})
>>> df2
  c1 c2  val
0  a  x   12
1  a  y   31
2  b  y   14
Run Code Online (Sandbox Code Playgroud)

是否有一个函数接受valfrom 的元素df2并将它们放在相应的索引中df1,从而导致:

>>> df1_updated 
  c1 c2  val
0  a  x   12
1  a  y   31
2  b  x    0
3  b  y   14
Run Code Online (Sandbox Code Playgroud)

python dataframe pandas

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

在python中创建Matlab单元格数组

我正在尝试在python中创建一个Matlab单元格数组并将其保存为.mat文件,但是当所有单元格包含2个值时遇到问题:

import scipy.io as sio

twoValues = {'a': array([[array([[2, 2]]), array([[3, 3]])]])}
sio.savemat('test.mat',twoValues)
Run Code Online (Sandbox Code Playgroud)

在Matlab中:

load('test.mat')
>>> a

a(:,:,1,1) =

           2           3


a(:,:,1,2) =

           2           3


>>> class(a)

ans =

int32
Run Code Online (Sandbox Code Playgroud)

回到python:

threeValues = {'a': array([[array([[2, 2, 2]]), array([[3, 3]])]])}
sio.savemat('test.mat',threeValues)
Run Code Online (Sandbox Code Playgroud)

在Matlab中:

>>> a

a = 

    [3x1 int32]    [2x1 int32]


>>> class(a)

ans =

cell
Run Code Online (Sandbox Code Playgroud)

这是什么原因?

python matlab scipy

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

分割字符向量,每个不同元素具有相同数量的 bin

x <- rep(c("A","B","C"),times=c(6,8,3))
 "A" "A" "A" "A" "A" "A" "B" "B" "B" "B" "B" "B" "B" "B" "C" "C" "C"
Run Code Online (Sandbox Code Playgroud)

我正在努力创建一个向量,该向量对应于每个字母被恰好分为 3 个容器:

       (A A A A A A  B B B B B B B B  C C C)
x_bin = 1 1 2 2 3 3  1 1 1 2 2 2 3 3  1 2 3
Run Code Online (Sandbox Code Playgroud)

在此示例中,我可以A通过组合每 2 个值将其分为 3 个容器。我可以B通过组合 3、3 和 2 个值将其分为 3 个容器。我只能C通过组合 1 个值来分为 3 个 …

r vector sequence

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

如何使用pandas替换列中的元素

鉴于此数据框架:

>>> a = pd.DataFrame(data={'words':['w1','w2','w3','w4','w5'],'value':np.random.rand(5)})
>>> a

     value   words
0  0.157876    w1
1  0.784586    w2
2  0.875567    w3
3  0.649377    w4
4  0.852453    w5

>>> b = pd.Series(data=['w3','w4'])
>>> b

0    w3
1    w4
Run Code Online (Sandbox Code Playgroud)

我想替换valuewith 的元素,zero但仅用于匹配中的元素b.因此,结果数据框应如下所示:

    value    words
0  0.157876    w1
1  0.784586    w2
2  0           w3
3  0           w4
4  0.852453    w5
Run Code Online (Sandbox Code Playgroud)

我想到了这些方面的东西:a.value[a.words==b] = 0但这显然是错的.

python replace pandas

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

替换路径的一部分 - python

有没有快速的方法来替换python中的部分路径?

例如:

old_path='/abc/dfg/ghi/f.txt'
Run Code Online (Sandbox Code Playgroud)

我不知道路径(年初/abc/dfg/),所以我真的很想告诉Python保持后到来的一切/ghi/(含),并取代一切之前/ghi//jkl/mno/:

>>> new_path
    '/jkl/mno/ghi/f.txt/'
Run Code Online (Sandbox Code Playgroud)

python replace path

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

获得相关矩阵的唯一组合值 - 熊猫

假设我有一个如下所示的相关矩阵:

df = pd.DataFrame(data={'a':[1,0.2,0.3,0.4],'b':[0.2,1,0.5,0.6],'c':[0.3,0.5,1,0.7],'d':[0.4,0.6,0.7,1]}, index=['a','b','c','d'])
Run Code Online (Sandbox Code Playgroud)

提取每个成对组合(ab,ac等)的唯一值的最佳方法是什么?

df2 =
      a_b  a_c  a_d  b_c  b_d  c_d 
      0.2  0.3  0.4  0.5  0.6  0.7
Run Code Online (Sandbox Code Playgroud)

我看到这样做的唯一方法是编写我自己的函数,但想知道是否有人知道这个的快捷方式

python correlation pandas

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

在 numpy masked_array 中用 nan 替换 masked

>> masks = [[1,1],[0,0]]    
>> [np.ma.masked_array(data=np.array([1.0,2.0]), mask=m, fill_value=np.nan).mean() for m in masks]
   [masked, 1.5]
Run Code Online (Sandbox Code Playgroud)

我想用 替换masked结果nan。有没有办法直接用 numpy's 来做到这一点masked_array

python numpy masked-array

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

如何跨数据帧的列使用pd.cut()?

>> df = pd.DataFrame(np.random.rand(10,4))
>> pd.cut(df,[0,0.5,1])

ValueError: Input array must be 1 dimensional
Run Code Online (Sandbox Code Playgroud)

如何pd.cut()跨数据框架的所有列工作?

python pandas

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

使用pd.melt将列转换为两个单独的变量值列

df = pd.DataFrame({'ID':[1,2,3,4,5,6], 'A1':[1,2,3,4,5,6],'A2':[3,4,5,6,7,8], 'B1':[9,8,7,6,5,4], 'B2':[6,5,4,3,2,1], 'C':['x','x','x','y','y','y']})
Run Code Online (Sandbox Code Playgroud)

我正在尝试以这种方式融化这个数据框

    ID  C variable1  value1 variable2  value2
     1  x       A1      1      B1       9
     2  x       A1      2      B1       8       
     3  x       A1      3      B1       7
     4  y       A1      4      B1       6
     5  y       A1      5      B1       5
     6  y       A1      6      B1       4
     1  x       A2      3      B2       6
     2  x       A2      4      B2       5
     3  x       A2      5      B2       4
     4  y       A2      6      B2       3
     5  y       A2      7      B2       2 …
Run Code Online (Sandbox Code Playgroud)

python melt pandas

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

标签 统计

python ×9

pandas ×6

dataframe ×2

replace ×2

correlation ×1

masked-array ×1

matlab ×1

melt ×1

numpy ×1

path ×1

r ×1

scipy ×1

sequence ×1

vector ×1