熊猫忽略带有 " 和 , 的单元格



我有一个包含所有d类型对象的分号分隔的pandas DataFrame。在某些单元格中,字符串值可以有",逗号(,),或两者都有(例如:TES"T_ING,_VALUE)。然后我用DF查询DF。查询基于某些条件来获取DataFrame的子集,但是具有示例中描述的模式的行被完全省略,但其余行被返回。另一个要求是我需要匹配所有的"也可以在文本中使用右引号,但要使用lambda来替换";"也没有做得很好。我尝试了几种方法,它们列在下面

问题1:

pd.read_csv("file.csv", delimiter=';')
pd.read_csv("file.csv", delmiter=';', thousands=',')
pd.read_csv("file.csv", delimiter=";", escapechar='"')
pd.read_csv("file.csv", delimiter=";", encoding='utf-8')

以上所有方法都无法加载相关数据。

问题2:输入:"TES"T_ING,_VALUE"到"TES"T_ING,_VALUE"我试过了:

df.apply(lambda s: s.str.replace('"', '""') 

不做任何事情。

到底是怎么回事?我在任何地方都找不到解决这类问题的任何问题。

提前感谢您的帮助。

编辑:对不起,由于敏感性,我没有提供一些模型数据,但这里有一些假数据说明了这个问题

下面是csv结构 的示例Column1; Column2 Column3; Column4; Column5 nTES" T_ING _VALUE; Col2Value Col3Value; Col4Value; Col5Value nCol1value; TES" T_ING _VALUE2; Col3Value Col4Value; Col5Value n

我已经尝试使用quote =csv。QUOTE_ALL/QUOTE_NONNUMERIC和quotechar='"'在df中加载时,但结果最终为Column1; Column2 Column3; Column4 Column5 n"TES"T_ING _VALUE; Col2Value; Col3Value; Col4Value; Col5Value";;;; n"Col1value TES" T_ING _VALUE2; Col3Value; Col4Value; Col5Value";;;; n

因此它将整行解释为第1列中的值,而不是实际上在;只对列1加引号。实际上,我可以遍历df中的每一行,也许可以进行拆分并将剩余的值加载到各自的列中,但CSV非常大,因此此操作需要一些时间。用户查询的数据子集应该从端点返回(这部分已经在工作)。

利用pd解决了这个问题。应用和利用自定义函数来处理每条记录。

df = pd.read_csv("csv_file.csv", delimiter=';', escapechar='\')
def mapper(record):
if ';' in record['col1']:
content = record['col1'].split(';')
if len(content) == num_columns:
if '"' in content[0]:
content[0] = content[0].replace('"', '""')
record['col1'] = content[0]
# repeat for remaining columns

processed = df.apply(lambda x: mapper(x), axis=1)

最新更新