我正在比較在我比較的不同 DataFrame 中以不同名稱('radius'、'r'、'Radius[m]' 等)給出相同數量的資料。現在我需要遍歷這些 DataFrame 并選擇一個數量。根據OR條件選擇列的最優雅/干凈的方法是什么?所以理想情況下我會這樣做
df['r' or 'radius']
然而,這顯然行不通。最接近這個可行的方法是什么?
uj5u.com熱心網友回復:
DataFrame.rename
假設每個資料幀將只包含這些數量之一,您可以將rename所有可能的數量設為r,因此您始終可以訪問為df['r']:
df = df.rename(columns={'radius': 'r', 'Radius[m]': 'r'})
例子:
df = pd.DataFrame({'Radius[m]': [42,13,100], 'foo': [0,1,2]})
df = df.rename(columns={'radius': 'r', 'Radius[m]': 'r'})
df['r']
# 0 42
# 1 38
# 2 100
# Name: r, dtype: int64
Index.intersection
如果資料框中可能有多個數量,請使用Index.intersection查找重疊名稱:
quantities = ['r', 'radius', 'Radius[m]']
columns = df.columns.intersection(pd.Index(quantities))
例子:
df1 = pd.DataFrame({'r': [1,2,3], 'foo': [20,40,60]})
columns = df1.columns.intersection(pd.Index(quantities))
df1[columns]
# r
# 0 1
# 1 2
# 2 3
df2 = pd.DataFrame({'radius': [100,200,300], 'foo': [0,1,2]})
columns = df2.columns.intersection(pd.Index(quantities))
df2[columns]
# radius
# 0 100
# 1 200
# 2 300
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/360285.html
上一篇:根據條件創建具有布林值的列
