我是python编程的新手。我使用pandas libs读了一个csv。
我正在使用的代码是这样的:
csv_file = pd.read_csv("C:\\location-of-csv\\sample-csv.csv");
def update_measure(data):
return data.split('_', 1)[1]
csv_file['UpdatedMeasurement'] = map(update_measure, csv_file['Measurement'])
当我打印输出时:
print(csv_file.head())
获得这样的价值
Measurement UpdatedMeasurement
0 COL_TOOL_QUALITY <map object at 0x0000025F7E342BA8>
1 COL_COMM_STATUS <map object at 0x0000025F7E342BA8>
2 COL_SEN_FW_HRTBT_STATUS <map object at 0x0000025F7E342BA8>
3 COL_WNL_FW_HRTBT_STATUS <map object at 0x0000025F7E342BA8>
4 COL_COMM_STATUS2 <map object at 0x0000025F7E342BA8>
请告诉我我的代码出了什么问题。 请参考我可以找到我的错误的文件,并希望彻底了解它,以便我知道我究竟做错了什么。
答案 0 :(得分:0)
str[1]
选择第二个列表需要str.split
:
csv_file['UpdatedMeasurement'] = csv_file['Measurement'].str.split('_', 1).str[1]
print (csv_file)
Measurement UpdatedMeasurement
0 COL_TOOL_QUALITY TOOL_QUALITY
1 COL_COMM_STATUS COMM_STATUS
2 COL_SEN_FW_HRTBT_STATUS SEN_FW_HRTBT_STATUS
3 COL_WNL_FW_HRTBT_STATUS WNL_FW_HRTBT_STATUS
4 COL_COMM_STATUS2 COMM_STATUS2
如果要使用自定义功能(NaN
s时失败)请使用Series.apply
或Series.map
:
def update_measure(data):
return data.split('_', 1)[1]
csv_file['UpdatedMeasurement'] = csv_file['Measurement'].apply(update_measure)
#alternative solution
#csv_file['UpdatedMeasurement'] = csv_file['Measurement'].apply(update_measure)
#list comprehension solution
#csv_file['UpdatedMeasurement'] = [data.split('_', 1)[1] for data in csv_file['Measurement']]
答案 1 :(得分:0)