我瀏覽了一些答案,但還沒有找到我正在尋找的確切內容。
我有一個單列結構如下的熊貓資料框(示例)
0 alex
1 7
2 female
3 nora
4 3
5 female
...
999 fred
1000 15
1001 male
我想將該單列拆分為包含姓名、年齡和性別的 3 列。看起來像這樣:
name age gender
0 alex 7 female
1 nora 3 female
...
100 fred 15 male
有沒有辦法做到這一點?我正在考慮使用索引,但不確定如何實際使用
uj5u.com熱心網友回復:
假設“0”是您的列名:
list_a = list(df[0])
a = np.array(list_a).reshape(-1, 3).tolist()
df2= pd.DataFrame(a,columns = ["name", "age","gender"])
uj5u.com熱心網友回復:
也許不是最有效的解決方案,但pd.concat()如果它們總是按順序排列,您可以使用它們并將它們放在一起:
df = pd.DataFrame({'Value':['alex',7,'female','nora',3,'female','fred',15,'male']})
df2 = pd.concat([df[(df.index x) % 3 == 0].reset_index(drop=True) for x in range(3)],axis=1)
df2.columns = ["name", "gender", "age"]
回報:
name gender age
0 alex female 7
1 nora female 3
2 fred male 15
uj5u.com熱心網友回復:
考慮unstack:
import pandas as pd
df = pd.DataFrame(["alex", 7, "female", "nora", 3, "female", "fred", 15, "male"])
people = range(len(df) // 3)
attributes = ["name", "age", "gender"]
multi_index = pd.MultiIndex.from_product([people, attributes])
df.set_index(multi_index).unstack(level=1).droplevel(level=0, axis=1).reindex(columns=attributes)
輸出:
name age gender
0 alex 7 female
1 nora 3 female
2 fred 15 male
uj5u.com熱心網友回復:
這是一種方法
# step through the DF and get values for name, age and gender as series
# each starts from 0, 1 and 3
name=df['Value'][::3].values
age=df['Value'][1::3].values
gender=df['Value'][2::3].values
# create a DF based on the values
out=pd.DataFrame({'name': name,
'age' : age,
'gender': gender})
out
name age gender
0 alex 7 female
1 nora 3 female
2 fred 15 male
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/526614.html
標籤:Python熊猫数据框
下一篇:大家好,我想轉置我的資料框
