簡體   English   中英

如何在 ndarray 中找到索引的值並轉換為 pandas Dataframe?

[英]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.mapapply 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM