если у меня есть DataFrame, состоящий из нескольких столбцов, которые состоят только из строк, и других столбцов, которые состоят только из числовых типов c (то есть с плавающей точкой или целых чисел), как мне умножить каждый элемент float или int в DataFrame на какая-то константа?
Например, если константа равна 3, и у меня есть этот фрейм данных:
import numpy as np
import pandas as pd
np.random.seed(seed=9876)
df1 = pd.DataFrame(['a']*3+['b'])
df2 = pd.DataFrame(['x','y','z', 't'])
df3 = pd.DataFrame(np.round(np.random.randn(4,2),2)*10)
df = pd.concat([df1, df2, df3], axis = 1)
df.columns = ['ind', 'x1', 'x2','x3']
df = df.set_index('ind')
print(df)
x1 x2 x3
ind
a x 3.9 -10.9
a y 2.1 3.2
a z -9.3 0.3
b t -11.1 -1.2
Вывод должен выглядеть следующим образом:
x1 x2 x3
ind
a x 11.7 -32.7
a y 6.3 9.6
a z -27.9 0.9
b t -33.3 -3.6
One Идея в том, чтобы использовать pd.concat([df['x1'], df.loc[:,['x2', 'x3']].mul(3)], axis = 1)
, но я не обязательно буду знать ex-ante, которые представляют собой строку против столбцов цифр c при применении этого к многочисленным фреймам данных. Это также кажется неэффективным. Я уверен, что лучший метод существует, но я еще не нашел его.