我在創建一個Dataframe,它是兩個無關係列的組合。從兩個不相關的系列創建DataFrame的最有效方法是什麼?
如果我們採取兩種dataframes:
A = ['a','b','c']
B = [1,2,3,4]
dfA = pd.DataFrame(A)
dfB = pd.DataFrame(B)
我在尋找這樣的輸出:
A B
0 a 1
1 a 2
2 a 3
3 a 4
4 b 1
5 b 2
6 b 3
7 b 4
8 c 1
9 c 2
10 c 3
11 c 4
的一種方式可能是對列表循環照片直接和創建數據框但必須有是更好的方法。我確信我錯過了熊貓文檔中的一些東西。
result = []
for i in A:
for j in B:
result.append([i,j])
result_DF = pd.DataFrame(result,columns=['A','B'])
最終我看着合併個月UUID,我有一些工作,但它需要年齡計算,並依賴過多的索引。一個通用的解決方案顯然更好:
from datetime import datetime
start = datetime(year=2016,month=1,day=1)
end = datetime(year=2016,month=4,day=1)
months = pd.DatetimeIndex(start=start,end=end,freq="MS")
benefit = pd.DataFrame(index=months)
A = [UUID('d48259a6-80b5-43ca-906c-8405ab40f9a8'),
UUID('873a65d7-582c-470e-88b6-0d02df078c04'),
UUID('624c32a6-9998-49f4-92b6-70e712355073'),
UUID('7207ab0c-3c7f-477e-b5bc-fbb8059c1dec')]
dfA = pd.DataFrame(A)
result = pd.DataFrame(columns=['A','month'])
for i in dfA.index:
newdf = pd.DataFrame(index=benefit.index)
newdf['A'] = dfA.iloc[i,0]
newdf['month'] = newdf.index
result = pd.concat([result,newdf])
result
似乎非常快,但僅適用於適合np數組的數據類型。如果我嘗試使用UUID,我會得到'TypeError:不受支持的操作數類型' – ludofet
你在看什麼'dtype'? – Stefan
查看已更新的答案,如果我誤解了您的示例,請告訴我。 – Stefan