DataFrame 中的字符串在 Pandas python 中连接

Posted

技术标签:

【中文标题】DataFrame 中的字符串在 Pandas python 中连接【英文标题】:String in DataFrame are wired in Pandas python 【发布时间】:2016-06-25 16:36:40 【问题描述】:

我得到一个如下的数据框,它是从 csv 文件中读取的。

   COMPOUND  CELL_LINE         AUC
0  'ADAM17'     'A549'   97.228927
1  'ADAM17'    'BT-20'   75.409415
2  'ADAM17'   'BT-549'   66.641992
3  'ADAM17'  'CAL-120'   82.707886
4  'ADAM17'  'CAL-148'   59.822385
5  'ADAM17'   'CAL-51'   79.014796
6  'ADAM17'   'CAMA-1'   66.700791
7  'ADAM17'   'Calu-3'  302.225056
8  'ADAM17'   'Calu-6'   99.496544

我在哪里索引AUC.iloc[0,0]。它给了我'ADAM17'。 我尝试测试AUC.iloc[0,0] == 'ADAM17',结果是False

发生了什么。

第二个问题如何读取csv文件,不带单引号直接变成下面的字符串

  COMPOUND CELL_LINE         AUC
0   ADAM17      A549   97.228927
1   ADAM17     BT-20   75.409415
2   ADAM17    BT-549   66.641992
3   ADAM17   CAL-120   82.707886
4   ADAM17   CAL-148   59.822385
5   ADAM17    CAL-51   79.014796
6   ADAM17    CAMA-1   66.700791
7   ADAM17    Calu-3  302.225056
8   ADAM17    Calu-6   99.496544  

【问题讨论】:

顺便说一句。在我原来的 csv 文件中。该字符串已经带有单引号,我想在 Dataframe 中删除它。原始文件:COMPOUND CELL_LINE AUC 'ADAM17' 'BT-20' 84.86402756 'ADAM17' 'BT-549' 69.95587388 'ADAM17' 'CAL-120' 70.06211297 【参考方案1】:

我认为你需要加双"",因为如果你只有一个'',它会被读作string而没有quotes

import pandas as pd
import io

temp=u"""COMPOUND,CELL_LINE,AUC
'ADAM17','A549',97.228927
'ADAM17','BT-20',75.409415
'ADAM17','BT-549',66.641992
'ADAM17','CAL-120',82.707886
'ADAM17','CAL-148',59.822385
'ADAM17','CAL-51',79.014796
'ADAM17','CAMA-1',66.700791
'ADAM17','Calu-3',302.225056
'ADAM17','Calu-6',99.496544"""
#after testing replace io.StringIO(temp) to filename
AUC = pd.read_csv(io.StringIO(temp))

print AUC
   COMPOUND  CELL_LINE         AUC
0  'ADAM17'     'A549'   97.228927
1  'ADAM17'    'BT-20'   75.409415
2  'ADAM17'   'BT-549'   66.641992
3  'ADAM17'  'CAL-120'   82.707886
4  'ADAM17'  'CAL-148'   59.822385
5  'ADAM17'   'CAL-51'   79.014796
6  'ADAM17'   'CAMA-1'   66.700791
7  'ADAM17'   'Calu-3'  302.225056
8  'ADAM17'   'Calu-6'   99.496544

print AUC.iloc[0,0] == 'ADAM17'
False
print AUC.iloc[0,0] == "ADAM17"
False
print AUC.iloc[0,0] == "'ADAM17'"
True

您可以将参数quotechar="'" 添加到read_csv 以删除''

import pandas as pd
import io

temp=u"""COMPOUND,CELL_LINE,AUC
'ADAM17','A549',97.228927
'ADAM17','BT-20',75.409415
'ADAM17','BT-549',66.641992
'ADAM17','CAL-120',82.707886
'ADAM17','CAL-148',59.822385
'ADAM17','CAL-51',79.014796
'ADAM17','CAMA-1',66.700791
'ADAM17','Calu-3',302.225056
'ADAM17','Calu-6',99.496544"""
#after testing replace io.StringIO(temp) to filename
df = pd.read_csv(io.StringIO(temp),  quotechar="'")
print df
  COMPOUND CELL_LINE         AUC
0   ADAM17      A549   97.228927
1   ADAM17     BT-20   75.409415
2   ADAM17    BT-549   66.641992
3   ADAM17   CAL-120   82.707886
4   ADAM17   CAL-148   59.822385
5   ADAM17    CAL-51   79.014796
6   ADAM17    CAMA-1   66.700791
7   ADAM17    Calu-3  302.225056
8   ADAM17    Calu-6   99.496544

【讨论】:

以上是关于DataFrame 中的字符串在 Pandas python 中连接的主要内容,如果未能解决你的问题,请参考以下文章

检查 Pandas DataFrame 列中的字符串是不是在字符串列表中

python pandas中如何将dataframe中的一列字符串类型转换为浮点类型?

修改pandas dataframe列中的字符串

Pandas库中的DataFrame

在 Pandas DataFrame 中的字符串内漂亮地打印换行符

pandas基于dataframe字符串数据列包含(contains)特定字符串来筛选dataframe中的数据行(rows where values contain substring)