仅更改 pandas DataFrame 中的数值数据
changing only numerical data in pandas DataFrame
假设我有大法框架:
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
您可以 select 按 dtype 的列,并且 return 在相乘之前仅具有数字类型的列:
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]})
已更新为 return 所有列:
df.update(df.loc[:, df.dtypes == np.int64] *2)
returns:
co1 col2 food
0 40 20 eggs
1 38 20 eggs
2 40 40 ham
3 42 40 ham
您可以 select 使用 select_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
假设我有大法框架:
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
您可以 select 按 dtype 的列,并且 return 在相乘之前仅具有数字类型的列:
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]})
已更新为 return 所有列:
df.update(df.loc[:, df.dtypes == np.int64] *2)
returns:
co1 col2 food
0 40 20 eggs
1 38 20 eggs
2 40 40 ham
3 42 40 ham
您可以 select 使用 select_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