我遇到的问题是我想使用numpy向量为给定列设置所有值。请考虑以下
import pandas as pd
from numpy import arange
from scipy import random
index = pd.MultiIndex.from_product([arange(0,3), arange(10,15)], names=['A', 'B'])
df = pd.DataFrame(columns=['test'], index=index)
someValues = random.randint(0, 10, size=5)
df.loc[0,:]['test'] = someValues
print someValues
print df.loc[0,:]
输出
Out[423]: array([9, 2, 7, 2, 4])
Out[422]:
test
B
10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
这是 - 我猜 - 从我没有提供值的索引。如果"顺序"我怎么能做这个操作呢?值在numpy数组中出现的顺序是它们应该设置在列上的顺序吗?
答案 0 :(得分:1)
您可以执行此操作,但由于右侧(受让人)未标记,因此只会分配第一个len(受让人)值
In [1]: import pandas as pd
In [2]: from numpy import arange
In [3]: from scipy import random
In [4]: index = pd.MultiIndex.from_product([arange(0,3), arange(10,15)], names=['A', 'B'])
In [5]: df = pd.DataFrame(columns=['test'], index=index)
In [6]: someValues = random.randint(0, 10, size=5)
In [8]: df.loc[0,'test'] = someValues
In [9]: df
Out[9]:
test
A B
0 10 0
11 8
12 2
13 0
14 2
1 10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
2 10 NaN
11 NaN
12 NaN
13 NaN
14 NaN
[15 rows x 1 columns]
如果指定索引,则会分配匹配值。
In [34]: df.loc[:,'test'] = Series(someValues,index=pd.MultiIndex.from_tuples([(0,10),(0,11),(1,10),(1,11),(1,14)]))
In [35]: df
Out[35]:
test
A B
0 10 5
11 9
12 NaN
13 NaN
14 NaN
1 10 1
11 0
12 NaN
13 NaN
14 7
2 10 NaN
11 NaN
12 NaN
13 NaN
14 NaN