#python #pandas #dataframe #data-science #data-munging
#python #pandas #фрейм данных #наука о данных #сбор данных #сжатие данных
Вопрос:
У меня есть строка фрейма данных:
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
Каков наилучший способ сделать это?
Комментарии:
1. Используйте
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]