在多索引 pandas 数据框中创建多个新列
Creating multiple new columns in a multiindexed pandas dataframe
当一个数据帧被多重索引时,是否可以在 Pandas 中创建多个新列?我想在 bar2
超列下添加两个新列 one
和 two
。像这样...
import pandas as pd
import numpy as np
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo'],
['one', 'two', 'one', 'two', 'one', 'two']]
index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 6), index=[1, 2, 3], columns=index)
df["bar2", ["one", "two"]] = np.random.randn(3, 2)
我知道我可以使用
一个一个地创建它们
df["bar2", "one"] = np.random.randn(3,1)
df["bar2", "two"] = np.random.randn(3,1)
有没有更快的方法同时进行这两项操作?
In [270]:
df_to_add = pd.DataFrame(np.random.randn(3,2) , columns=[['bar2' , 'bar2'] , ['one' , 'two']] , index = [1 , 2 , 3])
df_to_add
Out[270]:
bar2
one two
1 0.119730 -0.265579
2 1.777329 -1.178128
3 -2.700409 0.457430
In [271]:
pd.concat([df , df_to_add] , axis = 1)
当一个数据帧被多重索引时,是否可以在 Pandas 中创建多个新列?我想在 bar2
超列下添加两个新列 one
和 two
。像这样...
import pandas as pd
import numpy as np
arrays = [['bar', 'bar', 'baz', 'baz', 'foo', 'foo'],
['one', 'two', 'one', 'two', 'one', 'two']]
index = pd.MultiIndex.from_arrays(arrays, names=['first', 'second'])
df = pd.DataFrame(np.random.randn(3, 6), index=[1, 2, 3], columns=index)
df["bar2", ["one", "two"]] = np.random.randn(3, 2)
我知道我可以使用
一个一个地创建它们df["bar2", "one"] = np.random.randn(3,1)
df["bar2", "two"] = np.random.randn(3,1)
有没有更快的方法同时进行这两项操作?
In [270]:
df_to_add = pd.DataFrame(np.random.randn(3,2) , columns=[['bar2' , 'bar2'] , ['one' , 'two']] , index = [1 , 2 , 3])
df_to_add
Out[270]:
bar2
one two
1 0.119730 -0.265579
2 1.777329 -1.178128
3 -2.700409 0.457430
In [271]:
pd.concat([df , df_to_add] , axis = 1)