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字符串数据列包含(contains)特定字符串来筛选dataframe中的数据行(rows where values contain substring)