擅长:python、mysql、java
<p>我写了一个简单的函数来获得你想要的。标识是使用set操作完成的,但是它使用insert循环创建新列。也许有更好的方法来完成这个循环?在</p>
<pre><code>def func_df(df, l):
# First find intersection
intersect = set(df.columns).intersection(set(l))
df = df.loc[:, intersect]
# Now find list elements not here.
additions = set(l).difference(overlap)
for i in additions:
df.insert(0, i, 0)
return df
df = pd.DataFrame(
[[1, 5, 8],
[2, 6, 9],
[3, 7, 10]], columns=['a', 'b', 'c'])
out = func_df(df, ['a', 'b', 'd', 'k'])
print(out)
k d a b
0 0 0 1 5
1 0 0 2 6
2 0 0 3 7
</code></pre>