Table.TransformColumnTypes
时间: 2024-10-08 08:01:51 浏览: 12
Table.TransformColumnTypes 是Pandas库中的一个函数,用于对DataFrame中的列类型进行转换。它允许你按需改变每一列的数据类型,这对于清洗、预处理数据集非常有用。这个函数通常会在数据清洗阶段使用,因为有时候原始数据中的某些列可能并不是我们期望的类型,比如字符串被误认为是日期、浮点数被误读为整数等。
该函数接收一个DataFrame作为输入,并返回一个新的DataFrame,其中指定列的数据类型已按照你提供的规则进行了转换。其语法大致如下:
```python
df_transformed = df.Table.TransformColumnTypes({
column_name: target_type,
...
})
```
在这个表达式中,`column_name`是你想要转换的列名,而`target_type`是你希望转换后的数据类型,如str(字符串)、int(整数)、float(浮点数)、datetime(日期时间)等。如果某个列不需要转换,则可以从键值对中移除。
例如,如果你的`df['dob']`列原本是字符串,但实际上是日期格式,你可以这样做:
```python
df['dob_transformed'] = df['dob'].TransformColumnTypes({'dob': pd.api.types.CategoricalDtype(['YYYY-MM-DD'])})
```
这样就会把'dob'列转换成日期类型。
相关问题
以下代码转换为python可用,代码如下:let 源 = Table.FromColumns({Lines.FromBinary(Web.Contents("https://1x2d.titan007.com/" & "2337054" & ".js"), null, null, 936)}), Column1 = 源{50}[Column1], 拆分文本 = Text.Split(Column1, ";"","), 转换为表 = Table.FromList(拆分文本, Splitter.SplitTextByDelimiter(":"), null, null, ExtraValues.Error), 更改的类型 = Table.TransformColumnTypes(转换为表,{{"Column1", type text}}), 按分隔符拆分列 = Table.SplitColumn(更改的类型, "Column1", Splitter.SplitTextByDelimiter("^", QuoteStyle.Csv), {"Column1.1", "Column1.2"}), 按分隔符拆分列1 = Table.ExpandListColumn(Table.TransformColumns(按分隔符拆分列, {{"Column1.2", Splitter.SplitTextByDelimiter(";", QuoteStyle.Csv), let itemType = (type nullable text) meta [Serialized.Text = true] in type {itemType}}}), "Column1.2"), 更改的类型1 = Table.TransformColumnTypes(按分隔符拆分列1,{{"Column1.1", type text}, {"Column1.2", type text}}), 替换的值 = Table.ReplaceValue(更改的类型1,"var gameDetail=Array(","",Replacer.ReplaceText,{"Column1.1"}), 按分隔符拆分列2 = Table.SplitColumn(替换的值, "Column1.2", Splitter.SplitTextByDelimiter("|", QuoteStyle.Csv), {"Column1.2.1", "Column1.2.2", "Column1.2.3", "Column1.2.4", "Column1.2.5", "Column1.2.6", "Column1.2.7"}), 更改的类型2 = Table.TransformColumnTypes(按分隔符拆分列2,{{"Column1.2.1", type number}, {"Column1.2.2", type number}, {"Column1.2.3", type number}, {"Column1.2.4", type text}, {"Column1.2.5", type number}, {"Column1.2.6", type number}, {"Column1.2.7", type number}}), 重命名的列 = Table.RenameColumns(更改的类型2,{{"Column1.1", "公司ID"}, {"Column1.2.1", "胜"}, {"Column1.2.2", "平"}, {"Column1.2.3", "负"}, {"Column1.2.4", "时间"}, {"Column1.2.5", "凯胜"}, {"Column1.2.6", "凯平"}, {"Column1.2.7", "凯负"}}), 筛选的行 = Table.SelectRows(重命名的列, each [时间] <> null and [时间] <> ""),
以下是将该代码转换为Python的代码:
```
import pandas as pd
url = "https://1x2d.titan007.com/" + "2337054" + ".js"
data = pd.read_csv(url, encoding='gbk', header=None)
column1 = data.iloc[50, 0]
split_text = column1.split(";\"")
converted_table = pd.DataFrame([x.split(":") for x in split_text])
converted_table.columns = ['Column1.1', 'Column1.2']
split_column = converted_table['Column1.2'].str.split('^', expand=True)
split_column.columns = ['Column1.2.1', 'Column1.2.2']
joined_table = pd.concat([converted_table[['Column1.1']], split_column], axis=1)
split_column2 = joined_table['Column1.2.2'].str.split('|', expand=True)
split_column2.columns = ['Column1.2.2.1', 'Column1.2.2.2', 'Column1.2.2.3', 'Column1.2.2.4', 'Column1.2.2.5', 'Column1.2.2.6', 'Column1.2.2.7']
final_table = pd.concat([joined_table[['Column1.1', 'Column1.2.1']], split_column2], axis=1)
final_table = final_table.rename(columns={"Column1.1": "公司ID", "Column1.2.1": "胜", "Column1.2.2.1": "平", "Column1.2.2.2": "负", "Column1.2.2.4": "时间", "Column1.2.2.5": "凯胜", "Column1.2.2.6": "凯平", "Column1.2.2.7": "凯负"})
filtered_table = final_table.dropna(subset=['时间'])
filtered_table = filtered_table[filtered_table['时间'] != '']
print(filtered_table)
```
请注意,由于我无法访问您提供的网站,因此我使用了示例数据进行转换。如果数据源不同,则代码需要进行适当的修改。
let 源 = Folder.Files("C:\GZSL Tools\PBI\Outstanding List II\Job"), 筛选的隐藏文件1 = Table.SelectRows(源, each [Attributes]?[Hidden]? <> true), 调用自定义函数1 = Table.AddColumn(筛选的隐藏文件1, "转换文件 (3)", each #"转换文件 (3)"([Content])), 重命名的列1 = Table.RenameColumns(调用自定义函数1, {"Name", "Source.Name"}), 删除的其他列1 = Table.SelectColumns(重命名的列1, {"Source.Name", "转换文件 (3)"}), 扩展的表格列1 = Table.ExpandTableColumn(删除的其他列1, "转换文件 (3)", Table.ColumnNames(#"转换文件 (3)"(#"示例文件 (3)"))), 更改的类型 = Table.TransformColumnTypes(扩展的表格列1,{{"Source.Name", type text}, {"job_no", type text}, {"order_no", type text}, {"order_status_value", type text}, {"job_status_value", type text}, {"lab_section", type text}, {"order_expect_duedate", type datetime}, {"responsible_team", type text}, {"job_expect_duedate", type datetime}, {"job_remark", type text}, {"lab_in_date", type datetime}, {"lab_out_date", type datetime}, {"buyer_name_en", type text}, {"order_remark", type text}, {"order_delay_reason", type text}, {"order_create_date", type datetime}}), 删除的列 = Table.RemoveColumns(更改的类型,{"Source.Name"}) in 删除的列
这是一段 Power Query 代码,主要是从指定路径下的文件夹中读取文件,然后进行一系列的筛选、转换和重命名等操作,最终返回一个数据表。具体的操作包括:
1. 从指定路径下的文件夹中获取所有文件(包括隐藏文件);
2. 筛选出非隐藏文件;
3. 调用自定义函数对文件进行转换;
4. 重命名文件名列为 "Source.Name";
5. 选择需要的列;
6. 将扩展的表格列展开;
7. 修改列数据类型;
8. 删除不需要的列。
这段代码的作用是将指定文件夹中的文件读取并转换为一个数据表。
阅读全文