我对python非常陌生并一直在搜索google和stackoverflow来解决这个问题,我确信这只是一个语法问题。
我有一个包含多个列的数据框。
import pandas as pd
df = pd.read_csv("C:/path/file.csv")
我的csv有5列和~100k行 我只想要第5列的前两位数的子字符串。
我试过了:
df.assign(new = lambda x: x.column5[0:2],)
这将创建新字段并使用第5列中的完整值填充前两行,并为剩余部分提供NaN。
这些尝试给了我语法错误:
df['new'] = df['column5'].str[0:2]
df.map(lambda df['column5']: [:2])
我只是不知道如何使用通过pandas读取的表中现有列的前两位数来创建新列。
如果这是SAS我几小时前已经完成了,但我想尝试使用Python,所以感谢您的帮助
答案 0 :(得分:1)
我猜你的column5
列是int * / float * dtype,所以
尝试先将其转换为字符串:
df['new'] = df['column5'].astype(str).str[:2]
您可以在阅读CSV文件时明确指定列类型:
df = pd.read_csv('file_name.csv', ..., dtype={'column5': object})