我有一些问题,在我的csv中的一列的类型是一个'对象',但它应该是一个dict系列(一个dict为哪一行)。
关键是要将哪一行作为dict对键使用get('id '),以返回'Conta'列中哪一行的id值。
这就是作为“对象”列的方式:
| Conta |
| ---------------------------------------------|
| {'name':'joe','id':'4347176000574713087'} |
| {'name':'mary','id':'4347176000115055151'} |
| {'name':'fred','id':'4347176000574610147'} |
| {'name':'Marcos','id':'4347176000555566806'} |
| {'name':'marcos','id':'4347176000536834310'} |
最后就该这样
| Conta |
| ------------------- |
| 4347176000574713087 |
| 4347176000115055151 |
| 4347176000574610147 |
| 4347176000555566806 |
| 4347176000536834310 |
我试探着用途:
import pandas as pd
df = pd.read_csv('csv/Modulo_CS.csv')
df['Conta'] = df['Conta'].to_dict()
df['Conta'] = [x.get('id', 0) for x in df['Conta']]
#return: AttributeError: 'str' object has no attribute 'get'
我也尝试过使用ast.literal_eval(),但效果不太好
import ast
import pandas as pd
df = pd.read_csv('csv/Modulo_CS.csv')
df = df[['Conta','ID_CS']]
df['Conta'] = df['Conta'].apply(ast.literal_eval)
#return: ValueError: malformed node or string: nan
有人能帮帮我吗?
1条答案
按热度按时间46scxncf1#
请考虑替换以下行:
如果它被正确检测为字典,则:
如果每一行都是字符串:
但是,如果您得到的是格式错误的节点或json错误,请考虑先使用
str
,然后再使用ast.literal_eval()
: