[英]how to create a dictionary with one index key column and multiple value columns
我有一個包含 3 列 A、B、C 的數據框 df。 我希望 A 列作為索引和鍵,B 和 C 列作為 A 的值。
我嘗試了以下方法:
def cellDict():
df_set_index('A')['B','C']
x= df.set_index('A')['B']
y= df.set_index('A')['C']
z= zip(x,y)
def getCellDetails():
try:
cellDB_DF= pd.read_excel('cell_DB.xlsx')
cellLatDB= cellDB_DF['Latitude'].to_dict()
cellLongDB= cellDB_DF['Longitude'].to_dict()
cellDict= cellDF.set_index('Cell_ID')['Latitude']['Longitude'].to_dict()
print cellDict
except Exception as e:
print e.message
例外的結果是這樣的
df{cellID}=('latitude','longitude')
# Sample data.
df = pd.DataFrame({'A': [1, 2, 3], 'B': [100, 200, 300], 'C': [400, 500, 600]})
>>> df
A B C
0 1 100 400
1 2 200 500
2 3 300 600
然后使用字典理解:
>>> {key: (a, b) for key, a, b in df.values}
{1: (100, 400), 2: (200, 500), 3: (300, 600)}
根據@piRSquared 的建議,您還可以轉置數據框,然后使用to_dict
函數指定list
作為方向變量。
df.set_index('A').T.to_dict('list')
他的另一個建議提供了一個非常有效的解決方案:
dict(zip(df.A, zip(df.B, df.C)))
計時(Python 3.7 和 Pandas 0.24.2)
# Set-up 10k row dataframe.
df = pd.DataFrame({'A': range(10000), 'B': range(10000), 'C': range(10000)})
# Method 1
%timeit -n 10 {key: (a, b) for key, a, b in df.values}
# 14.8 ms ± 3.62 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
# Method 2
%timeit -n 10 df.set_index('A').T.to_dict('list')
# 520 ms ± 41.5 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
# Method 3
%timeit -n 10 dict(zip(df.A, zip(df.B, df.C)))
# 7.7 ms ± 3.32 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
# Method 4
%timeit -n 10 {k: (a, b) for k, a, b in zip(*map(df.get, df))}
# 9.61 ms ± 3.81 ms per loop (mean ± std. dev. of 7 runs, 10 loops each)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.