假设我的数据框包含以下数据:
>>> 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应该对应,1而l2应该对应2.我想创建一个新列' c',对于每一行,c = 1if a = l1和b = 1(或a = l2和b = 2).如果a = l1和b = 2(或a = l2和b = 1)然后c = 0.
生成的数据框应如下所示:
a …Run Code Online (Sandbox Code Playgroud) 鉴于这两个数据框:
>>> 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中创建一个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)
这是什么原因?
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 个 …
鉴于此数据框架:
>>> 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中的部分路径?
例如:
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) 假设我有一个如下所示的相关矩阵:
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)
我看到这样做的唯一方法是编写我自己的函数,但想知道是否有人知道这个的快捷方式
>> 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?
>> 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()跨数据框架的所有列工作?
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)