如何将多个列从一个数据帧复制到新数据帧?同时重命名它们也很不错
df2['colA']=df1['col-a'] #This works
df2['colA', 'colB']=df1['col-a', 'col-b'] #Tried and Failed
由于
答案 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() 时完全相同。