相关疑难解决方法(0)

更改Pandas中列的数据类型

我想将表格(表示为列表列表)转换为Pandas DataFrame.作为一个极其简化的例子:

a = [['a', '1.2', '4.2'], ['b', '70', '0.03'], ['x', '5', '0']]
df = pd.DataFrame(a)
Run Code Online (Sandbox Code Playgroud)

将列转换为适当类型的最佳方法是什么,在这种情况下,将第2列和第3列转换为浮点数?有没有办法在转换为DataFrame时指定类型?或者最好先创建DataFrame,然后循环遍历列以更改每列的类型?理想情况下,我想以动态方式执行此操作,因为可能有数百列,我不想确切地指定哪些列属于哪种类型.我可以保证的是,每列包含相同类型的值.

python types casting dataframe pandas

688
推荐指数
11
解决办法
132万
查看次数

即使在使用.loc之后,Pandas仍然会获得SettingWithCopyWarning

起初,我尝试编写一些看起来像这样的代码:

import numpy as np
import pandas as pd
np.random.seed(2016)
train = pd.DataFrame(np.random.choice([np.nan, 1, 2], size=(10, 3)), 
                     columns=['Age', 'SibSp', 'Parch'])

complete = train.dropna()    
complete['AgeGt15'] = complete['Age'] > 15
Run Code Online (Sandbox Code Playgroud)

获得SettingWithCopyWarning后,我尝试使用.loc:

complete.loc[:, 'AgeGt15'] = complete['Age'] > 15
complete.loc[:, 'WithFamily'] = complete['SibSp'] + complete['Parch'] > 0
Run Code Online (Sandbox Code Playgroud)

但是,我仍然得到同样的警告.是什么赋予了?

python pandas chained-assignment

17
推荐指数
1
解决办法
3901
查看次数

如何在没有循环的情况下将多个Pandas DF列更改为分类

我有一个DataFrame,我想将几​​个列从'object'类型更改为'category'.

我可以同时更改几列用于浮动,

dftest[['col3', 'col4', 'col5', 'col6']] = \
    dftest[['col3', 'col4', 'col5', 'col6']].astype(float)
Run Code Online (Sandbox Code Playgroud)

对于'类别'我不能这样做,我需要一个接一个地做(或像这里一样循环).

for col in ['col1', 'col2']:
    dftest[col] = dftest[col].astype('category')
Run Code Online (Sandbox Code Playgroud)

问题:是否有任何方法可以像"浮动"示例一样对所有想要的列进行更改?

如果我尝试同时做几个列,我有:

dftest[['col1','col2']] = dftest[['col1','col2']].astype('category')
## NotImplementedError: > 1 ndim Categorical are not supported at this time
Run Code Online (Sandbox Code Playgroud)

我目前的工作测试代码:

import numpy as np
import pandas as pd 

factors= np.array([
        ['a', 'xx'],
        ['a', 'xx'],
        ['ab', 'xx'],
        ['ab', 'xx'],
        ['ab', 'yy'],
        ['cc', 'yy'],
        ['cc', 'zz'],
        ['d', 'zz'],
        ['d', 'zz'],
        ['g', 'zz'] 
        ])

values = np.random.randn(10,4).round(2)

dftest = pd.DataFrame(np.hstack([factors,values]), 
                  columns = …
Run Code Online (Sandbox Code Playgroud)

python numpy categorization dataframe pandas

6
推荐指数
1
解决办法
3062
查看次数