Python pandas如何复制某些列
Posted
技术标签:
【中文标题】Python pandas如何复制某些列【英文标题】:Python pandas how to duplicate certain columns 【发布时间】:2020-12-12 07:45:31 【问题描述】:我有一个数据框行:
key1 key2 key3 val1 val2 val3 .. valn
a b c 1 2 3 14
我想复制值列:
key1 key2 key3 val1_0 val2_0 val3_0 .. valn_0 val1_1 val2_1 val3_1 .. valn_1
a b c 1 2 3 14 1 2 3 14
最好的方法是什么?
【问题讨论】:
使用pd.concat([df,df.filter(like="val")],axis=1)
。
【参考方案1】:
试试
s = df.filter(like='val')
df = pd.concat([df.drop(s.columns,1),s.add_suffix('_0'),s.add_suffix('_1')],axis=1)
df
Out[106]:
key1 key2 key3 val1_0 val2_0 ... valn_0 val1_1 val2_1 val3_1 valn_1
0 a b c 1 2 ... NaN 1 2 3 NaN
[1 rows x 11 columns]
【讨论】:
【参考方案2】:最简单的方法是对列进行迭代,检查它是否为数字并复制它。
import pandas as pd
from pandas.api.types import is_numeric_dtype
df = pd.DataFrame('A': ['a', 'b', 'c'], 'B': [1.0, 2.0, 3.0])
columns = df.columns
for col in columns:
if is_numeric_dtype(df[col]):
df[col + '_1'] = df[col]
print(df.columns)
>> ['A','B','B_0']
【讨论】:
【参考方案3】:从 df.columns 获取所有列名。然后进行字符串操作,例如添加 df 列名称独有的内容。然后在赋值部分循环遍历新列名,并将旧列赋值给它。
伪代码
for x in df.columns:
df[x+"new"] =df[x]
【讨论】:
以上是关于Python pandas如何复制某些列的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 Pandas 从 Excel 中读取某些列 - Python
如何根据 Python Pandas 中的其他列在 DataFrame 中创建新列? [复制]
Python,Pandas,数据框 - 拆分和删除单元格的某些部分