【发布时间】:2019-01-22 10:46:33
【问题描述】:
我有一个看起来像这样的数据框。
df =
0 1 2 3 4
0 0.5 0.4 0.3 0.2 0.1
1 0.5 0.4 0.3 0.2 0.1
2 0.5 0.4 0.3 0.2 0.1
3 0.5 0.4 0.3 0.2 0.1
还有一个看起来像这样的列表。
dir = [[0,1,2],[3,4]]
我想要做的是创建一个新的空数据框,并根据列表用附加的列填充它。为此,我需要遍历列表并附加相应的列。这是所需的输出:
0 1
0 0.5 0.2
1 0.5 0.2
2 0.5 0.2
3 0.5 0.2
4 0.4 0.1
5 0.4 0.1
6 0.4 0.1
7 0.4 0.1
8 0.3
9 0.3
10 0.3
11 0.3
这是我的代码尝试:
new_df = pd.DataFrame()
for i in dir:
for j in i:
new_df.append([df[i]])
但是每次都会覆盖新的数据帧而不是追加,并且还会将数据追加为行而不是列。
编辑 以下解决方案适用于等长列表的列表:
L = [[0,1],[2,3]]
df = pd.DataFrame(np.hstack([df[x].values.T.ravel()[:, None] for x in L]))
print (df)
但是我需要一个可以处理不同长度列表的解决方案(即 list = [ [0,1,2], [3,4] ])
【问题讨论】:
标签: python list pandas dataframe append