[英]How do I find the value of an index in an ndarray and convert to pandas Dataframe?
我有一個由ndarray
創建的 ndarray,如下所示:
idx = array([[2941, 4837, 3593],
[ 323, 3209, 3649]])
我想用它來創建一個 pandas DataFrame
,使用它們作為另一個具有其他符號的數據幀的索引,例如:
2941, A
4837, B
3593, C
323, D
3209, E
3649, F
而且,使用類似gdf = pd.DataFrame(idx)
我想要一個DataFrame
idx_0 idx_1 idx_2
0 A B C
1 D E F
代替
idx_0 idx_1 idx_2
0 2941 4837 3593
1 323 3209 3649
如何使用多維數組做到這一點? df.loc[idx]
不起作用。
使用Series.map
並apply
DataFrame
的所有列:
s = df.set_index('a')['b']
print (s)
a
2941 A
4837 B
3593 C
323 D
3209 E
3649 F
Name: b, dtype: object
idx = np.array([[2941, 4837, 3593],
[ 323, 3209, 3649]])
gdf = pd.DataFrame(idx).apply(lambda x: x.map(s))
print (gdf)
0 1 2
0 A B C
1 D E F
您可以使用applymap :
lookup = dict(zip(df[0], df[1]))
result = pd.DataFrame(idx).applymap(lookup.get)
print(result)
Output
0 1 2
0 A B C
1 D E F
假設df
是:
0 1
0 2941 A
1 4837 B
2 3593 C
3 323 D
4 3209 E
5 3649 F
As an alternative, given that idx
is a numpy array, you could map using numpy.vectorize , and then build the DataFrame:
result = pd.DataFrame(np.vectorize(lookup.get)(idx))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.