Python Pandas复制列

时间:2017-05-16 19:21:38

标签: python pandas dataframe

如何将多个列从一个数据帧复制到新数据帧?同时重命名它们也很不错

df2['colA']=df1['col-a']  #This works

df2['colA', 'colB']=df1['col-a', 'col-b'] #Tried and Failed

由于

4 个答案:

答案 0 :(得分:9)

你必须使用双括号:

df2[['colA', 'colB']] = df1[['col-a', 'col-b']]

答案 1 :(得分:1)

以下方法也可以:

# original DataFrame
df = pd.DataFrame({'a': ['hello', 'cheerio', 'hi', 'bye'], 'b': [1, 0, 1, 0]})
# new DataFrame created from 2 original cols (new cols renamed)
df_new = pd.DataFrame(columns=['greeting', 'mode'], data=df[['a','b']].values)

如果要对新数据框使用条件:

df_new = pd.DataFrame(columns=['farewell', 'mode'], data=df[df['b']==0][['a','b']].values)

或者,如果您只想使用特定的行(索引),则可以使用“ loc”:

df_new = pd.DataFrame(columns=['greetings', 'mode'], data=df.loc[2:3][['a','b']].values)

# if you need preserve row index, then add index=... as argument, like:
df_new = pd.DataFrame(columns=['farewell', 'mode'], data=df.loc[2:3][['a','b']].values, 
                      index=df.loc[2:3].index )

答案 2 :(得分:1)

这是针对 pandas=1.3.0 进行的尝试和测试:

df2 = df1[['col-a', 'col-b']].copy()

如果你还想同时重命名列名,可以这样写:

df2 = pd.DataFrame(columns=['colA', 'colB'])
df2[['colA', 'colB']] = df1[['col-a', 'col-b']]

答案 3 :(得分:0)

至于 Pandas=1.2.4,最简单的方法是:

df2[['colA', 'colB']] = df1[['col-a', 'col-b']].values

注意它不需要 .copy() 因为应用 values 首先将数据帧值转换为一个 numpy 数组(浅拷贝),然后复制值(链接内存中数组的地址)到数据帧中。与在其末尾应用 copy() 时完全相同。