我如何從 df 轉到 df1,其中 df 和 df1 如下所示?
df = koalas.DataFrame({"teams": [["SF", "NYG"] for _ in range(7)],'teams1':[np.random.randint(0,10) for _ in range(7)]})
df
output:
teams teams1
0 [SF, NYG] 0
1 [SF, NYG] 5
2 [SF, NYG] 8
3 [SF, NYG] 1
4 [SF, NYG] 2
5 [SF, NYG] 8
6 [SF, NYG] 5
df1 = koalas.DataFrame({"col1": ["SF" for _ in range(7)],\
"col2": ["NYG" for _ in range(7)],\
'teams1':[np.random.randint(0,10) for _ in range(7)]})
df1
output:
col1 col2 teams1
0 SF NYG 8
1 SF NYG 2
2 SF NYG 9
3 SF NYG 4
4 SF NYG 8
5 SF NYG 3
6 SF NYG 1
我可以在這里看到大熊貓的解決方案。但是這個解決方案將收集驅動程式端的所有資料,這不是我想要發生的。我想要一個考拉(pyspark 上的熊貓)解決方案
uj5u.com熱心網友回復:
我發現只使用對工人進行操作并且不向驅動程式收集所有資料的函式的一種方法是
df['teams'] \
.astype(str) \
.str.replace('\[|\]', '') \
.str.split(pat=',', n=1, expand=True)
# 0 1
# 0 SF NYG
# 1 SF NYG
# 2 SF NYG
# 3 SF NYG
# 4 SF NYG
# 5 SF NYG
# 6 SF NYG
我不得不將列轉換為字串型別,因為它是一個 numpy 陣列,而 pyspark 無法使用它。
要沿其他列獲取初始資料框,您可以使用簡單的concat:
import databricks.koalas as ks
ks.concat([
df['teams'].astype(str).str.replace('\[|\]', '').str.split(pat=',', n=1, expand=True),
df.drop(columns='teams')
], axis=1)
# 0 1 teams1
# 0 SF NYG 2
# 1 SF NYG 2
# 2 SF NYG 1
# 3 SF NYG 1
# 4 SF NYG 7
# 5 SF NYG 8
# 6 SF NYG 6
轉載請註明出處,本文鏈接:https://www.uj5u.com/yidong/383929.html
下一篇:無法將考拉系列指定為考拉中的新列
