3 回答

TA貢獻1821條經驗 獲得超6個贊
嘗試
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]

TA貢獻1847條經驗 獲得超11個贊
最簡單的方法是迭代你的列,檢查它是否是數字并復制它。
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']

TA貢獻2012條經驗 獲得超12個贊
從 df.columns 中獲取所有列名。然后進行字符串操作,例如添加 df 列名稱獨有的內容。然后循環遍歷分配部分中的新列名并將舊列分配給它。
偽代碼
for x in df.columns:
df[x+"new"] =df[x]
添加回答
舉報