[英]New column in pandas - adding series to dataframe by applying a list groupby
[英]adding list in a new column in a pandas dataframe
您可以使用Multiindex實現
但是您將需要一個額外的索引來表示a,b,c,d
arrays = [["1", "1", "1", "2", "2", "2", "2", "3", "3", "3", "3"],
["a", "b", "c", "a", "b", "c", "a", "b", "c"]]
tuples = list(zip(*arrays))
index = pandas.MultiIndex.from_tuples(tuples, names=['Levels','Breakdown'])
s = pandas.DataFrame("your_data", index=index)
使用文檔中使用的數據,您的數據框將如下所示:
Levels Breakdown
1 a -0.985654
b 0.782516
c -0.896590
2 a 0.841488
b -0.577790
c -1.130534
a 0.587779
3 b -0.935374
c 1.658043
編輯:
自從您編輯問題后,我提出了建議。 有關詳細信息,請查看此問題以及pandas.DataFrame.stack上的pandas 文檔 。
由於您僅發布圖片而不是復制數據,因此我沒有使用您的值。 但是我的樣本數據看起來像這樣:
d = {"Line": ["foo", "bar", "baz"], "CUT START": ["a", "b", "c"],
"CUT FINISH": ["x", "y", "z"],
"END START" :[1, 2, 3], "END FINISH": [4, 5, 6]}
Line CUT START CUT FINISH END START END FINISH
0 foo a x 1 4
1 bar b y 2 5
2 baz c z 3 6
我像這樣轉換它:
# Set line as index
df = df.set_index("Line")
activitys = ["CUT", "END"] # Add the rest of your activitys here
status = ["START", "FINISH"]
df.columns = pandas.MultiIndex.from_product([activitys, status])
返回:
CUT END
START FINISH START FINISH
Line
foo a x 1 4
bar b y 2 5
baz c z 3 6
然后,您可以堆疊。
df = df.stack(0)
FINISH START
Line
foo CUT x a
END 4 1
bar CUT y b
END 5 2
baz CUT z c
END 6 3
現在您只需要重新排序
df.columns = ["START", "FINISH"]
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.