指定从HTTP头的每一列读取csv中每一列的数据类型

2024-04-25 17:58:56 发布

您现在位置:Python中文网/ 问答频道 /正文

project_id = request.data['project']
list_fields = request.POST.getlist('headers')
type_fields = request.POST.getlist('type')

dataframe = pandas.read_csv(file_path, header=0)
                for field in list_fields:
                    for tipo in type_fields:
                        dataframe[field] = dataframe[field].astype(type)

如何根据请求中的过去将每种类型的数据分配给一列?你知道吗


Tags: inprojectidfielddataframepandasfieldsfor
2条回答

当您使用from_csv()时,pandas将进行大量的类型推断。事实上,比其他方法(如^{})更重要。我问了一个关于它的问题^{},这有点相关。你知道吗

我假设前端用户必须指定每个列的数据类型。在这种情况下,这是一个简单的例子:

import numpy as np
import pandas as pd

df = pd.DataFrame({'a':[1, 2, 3], 'b': [4, 5, 6], 'c': [7, 8, 9]}, 
                   dtype=int)

list_fields = ['a', 'b', 'c']
list_types = [str, int, np.float64]

for field, dtype in zip(list_fields, list_types):
    df[field] = df[field].astype(dtype)

print(df.dtypes)

如果用户不必指定所有字段的数据类型,那么进一步考虑,我认为这将是一个完全不同的主题,完全取决于如何过滤/处理用户输入。你知道吗

您可以从前面传递一个包含要定义的所有列的列表,而不是传递另一个包含列的所有类型的列表。在那之后你可以投射那些循环。你知道吗

to_define_list_fields = request.POST.getlist('define')

type_list_fields = request.POST.getlist('types')                  

for dfield in to_define_list_fields:

   for type in type_list_fields:

       dataframe[dfield] = dataframe[dfield].astype(type)

相关问题 更多 >

    热门问题