假设我有DafaFrame:
text value_1 value_2
0 egg 2 1
1 ham 4 2
2 bla 4 3
我想通过将每个值乘以2来排除数字。如何省略文本列? 而不是
text value_1 value_2
0 eggegg 4 2
1 hamham 8 4
2 blabla 8 6
我想得到:
text value_1 value_2
0 egg 4 2
1 ham 8 4
2 bla 8 6
答案 0 :(得分:4)
您可以使用select_dtype:
选择特定dtype的列In [11]: df.select_dtypes(include=['int64'])
Out[11]:
value_1 value_2
0 2 1
1 4 2
2 4 3
In [12]: df.select_dtypes(include=['int64', 'floating'])
Out[12]:
value_1 value_2
0 2 1
1 4 2
2 4 3
这意味着您可以按如下方式更新df:
In [21]: s = df.select_dtypes(include=['int64']) * 2
In [22]: df[s.columns] = s
In [23]: df
Out[23]:
text value_1 value_2
0 egg 4 2
1 ham 8 4
2 bla 8 6
答案 1 :(得分:2)
您可以按dtype选择列,并在乘以之前仅返回带有数字类型的列:
import numpy as np
import pandas as pd
df = pd.DataFrame({'food': ['eggs','eggs','ham','ham'],'co1':[20,19,20,21,],
'col2': [10,10,20,20]})
更新以返回所有列:
df.update(df.loc[:, df.dtypes == np.int64] *2)
返回:
co1 col2 food
0 40 20 eggs
1 38 20 eggs
2 40 40 ham
3 42 40 ham