我有一个小样本数据:
import pandas as pd
df = {'ID': [3009, 129,119,120,121,122,130,3014,266,849,174,844 ],
'V': ['IGHV7-B*01','IGHV7-B*01','IGHV6-A*01','GHV6-A*01','IGHV6-A*01','IGHV6-A*01','IGHV4-L*03','IGHV4-L*03','IGHV5-A*01','IGHV5-A*04','IGHV6-A*02','IGHV6-A*02'],
'Prob': [1,1,0.8,0.8056,0.9,0.805 ,1,1,0.997,0.401,1,1]}
df = pd.DataFrame(df)
Run Code Online (Sandbox Code Playgroud)
好像
df
Out[25]:
ID Prob V
0 3009 1.0000 IGHV7-B*01
1 129 1.0000 IGHV7-B*01
2 119 0.8000 IGHV6-A*01
3 120 0.8056 IGHV6-A*01
4 121 0.9000 IGHV6-A*01
5 122 0.8050 IGHV6-A*01
6 130 1.0000 IGHV4-L*03
7 3014 1.0000 IGHV4-L*03
8 266 0.9970 IGHV5-A*01
9 849 0.4010 IGHV5-A*04
10 174 1.0000 IGHV6-A*02
11 844 1.0000 IGHV6-A*02
Run Code Online (Sandbox Code Playgroud)
我想将'V'列拆分为' - '分隔符并将其移动到另一个名为'allele'的列
Out[25]:
ID Prob V …Run Code Online (Sandbox Code Playgroud) 我查了一下这篇文章:在pandas中的数据框中查找非数字行? 但它并没有真正回答我的问题.
我的样本数据:
import pandas as pd
d = {
'unit': ['UD', 'UD', 'UD', 'UD', 'UD','UD'],
'N-D': [ 'Q1', 'Q2', 'Q3', 'Q4','Q5','Q6'],
'num' : [ -1.48, 1.7, -6.18, 0.25, 'sum(d)', 0.25]
}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
它看起来像这样:
N-D num unit
0 Q1 -1.48 UD
1 Q2 1.70 UD
2 Q3 -6.18 UD
3 Q4 0.25 UD
4 Q5 sum(d) UD
5 Q6 0.25 UD
Run Code Online (Sandbox Code Playgroud)
我想只筛选出'num'列中非NON-NUMERIC的行.我希望所有列只用于包含列'num'的非数字值的行.
期望的输出:
N-D num unit
4 Q5 sum(d) UD
Run Code Online (Sandbox Code Playgroud)
我的尝试:
nonnumeric=df[~df.applymap(np.isreal).all(1)] #didn't work, it pulled out …Run Code Online (Sandbox Code Playgroud) 我一直在网上搜索并发现了类似的问题,但仍然找不到我正在寻找的答案。我有2个excel文件:
数据1
ColumnA columnB columnC columnD
A B C D
A B C D
A B C D
Run Code Online (Sandbox Code Playgroud)
数据2
ColumnE columnF columnG
E F G
E F G
E F G
Run Code Online (Sandbox Code Playgroud)
我想将列 F 从 data2 添加到 data1:
ColumnA columnB columnC columnD columnF
A B C D F
A B C D F
A B C D F
Run Code Online (Sandbox Code Playgroud)
我试过
data2['columnF'] = data1['columnF'] #doesn't work
Run Code Online (Sandbox Code Playgroud)
也试过
data1['columnF'] = '' #adding a columnF to data1
merg_left = pd.merge(left=data1,right=data2, how='left',
left_on='columnF', right_on='columnF')
#gave me …Run Code Online (Sandbox Code Playgroud) 我有一个excel数据,我用python pandas读入:
import pandas as pd
data = pd.read_csv('..../file.txt', sep='\t' )
Run Code Online (Sandbox Code Playgroud)
模拟数据看起来像这样:
unwantedjunkline1
unwantedjunkline2
unwantedjunkline3
ID ColumnA ColumnB ColumnC
1 A B C
2 A B C
3 A B C
...
Run Code Online (Sandbox Code Playgroud)
在这种情况下,数据包含3个垃圾行(我不想读入的行),然后点击标题,有时它包含4个或更多的垃圾行.所以在这种情况下我读了数据:
data = pd.read_csv('..../file.txt', sep='\t', skiprows = 3 )
Run Code Online (Sandbox Code Playgroud)
数据看起来像:
ID ColumnA ColumnB ColumnC
1 A B C
2 A B C
3 A B C
...
Run Code Online (Sandbox Code Playgroud)
但是每次不需要的行数不同时,是否有办法使用pandas读取表文件而不使用'skiprows =',而是使用一些匹配头的命令,以便它知道从头开始读取?所以我不必单击打开文件来计算每次文件包含多少不需要的行,然后手动更改'skiprows ='选项.
它看起来像这样:
Dates N-D unit
0 1/1/2016 Q1 UD
1 Q2 UD
2 Q3 UD
3 2/1/2016 Q4 UD
4 5/1/2016 Q5 UD
5 Q6 UD
Run Code Online (Sandbox Code Playgroud)
我想过滤掉空的Dates行并将其保存在dataframe blankDate中:
Dates N-D unit
1 Q2 UD
2 Q3 UD
5 Q6 UD
blankDate=df1[df1['Dates']== ''] #this didn't work
df1['Discharge Date'] = pd.to_datetime(df1['Discharge Date']) #then I converted the column to date format but still doesn't work
Run Code Online (Sandbox Code Playgroud)
如果列是一个字符串这段代码工作,它也适用于我认为的数字
blankDate=df1[df1['stringcolumn']== '']
Run Code Online (Sandbox Code Playgroud)
但我如何与空日期行比较?
我有一个小的测试数据样本:
import pandas as pd
df = {'ID': ['H900','H901','H902','','M1435','M149','M157','','M699','M920','','M789','M617','M991','H903','M730','M191'],
'Clone': [0,1,2,2,2,2,2,2,3,3,3,4,4,4,5,5,6],
'Length': [48,42 ,48,48,48,48,48,48,48,48,48,48,48,48,48,48,48]}
df = pd.DataFrame(df)
Run Code Online (Sandbox Code Playgroud)
看起来像:
df
Out[4]:
Clone ID Length
0 0 H900 48
1 1 H901 42
2 2 H902 48
3 2 48
4 2 M1435 48
5 2 M149 48
6 2 M157 48
7 2 48
8 3 M699 48
9 3 M920 48
10 3 48
11 4 M789 48
12 4 M617 48
13 4 M991 48
14 5 H903 48 …Run Code Online (Sandbox Code Playgroud) 我有一个示例数据集,我正在尝试根据"HP"列中的值进行排名:
import pandas as pd
d = {
'unit': ['UD', 'UD', 'UD' ,'UC','UC', 'UC','UA','UA','UA','UB','UB','UB'],
'N-D': [ 'C1', 'C2', 'C3','Q1', 'Q2', 'Q3','D1','D2','D3','E1','E2','E3'],
'HP': [24, 24, 24,7,7,7,7,7,7,5,5,5]
}
df = pd.DataFrame(d)
df['rank']=df['HP'].rank(ascending=False, method='dense')
df
Run Code Online (Sandbox Code Playgroud)
看起来像:
HP N-D unit rank
0 24 C1 UD 1.0
1 24 C2 UD 1.0
2 24 C3 UD 1.0
3 7 Q1 UC 2.0
4 7 Q2 UC 2.0
5 7 Q3 UC 2.0
6 7 D1 UA 2.0
7 7 D2 UA 2.0
8 7 D3 …Run Code Online (Sandbox Code Playgroud) 我有一个示例数据集,该数据集比我的实际数据集小得多,它实际上是一个文本文件,我想将其作为熊猫表读取并对其进行处理:
import pandas as pd
d = {
'one': ['title1', 'R2G', 'title2', 'K5G', 'title2','R14G', 'title2','R2T','title3', 'K10C', 'title4', 'W7C', 'title4', 'R2G', 'title5', 'K8C']
}
df = pd.DataFrame(d)
Run Code Online (Sandbox Code Playgroud)
示例数据集如下所示:
df
Out[20]:
one
0 title1
1 R2G
2 title2
3 K5G
4 title2
5 R14G
6 title2
7 R2T
8 title3
9 K10C
10 title4
11 W7C
12 title4
13 R2G
14 title5
15 K8C
Run Code Online (Sandbox Code Playgroud)
我添加了第二列,称为“值”:
df.insert(1,'value','')
df
Out[22]:
one value
0 title1
1 R2G
2 title2
3 K5G
4 title2
5 R14G …Run Code Online (Sandbox Code Playgroud) 我有一个示例数据集:
ID sequence
H100 ATTCCT
H231 CTGGGA
H2002 CCCCCCA
Run Code Online (Sandbox Code Playgroud)
我只想在每个 ID 前添加一个“>”:
ID sequence
>H100 ATTCCT
>H231 CTGGGA
>H2002 CCCCCCA
Run Code Online (Sandbox Code Playgroud)
从这篇文章将字符串附加到熊猫数据帧所述列中每个值的开头(优雅地) 我得到了代码:
df["ID"] = '>' + df["ID"].astype(str)
Run Code Online (Sandbox Code Playgroud)
但是,出现了此警告消息:
A value is trying to be set on a copy of a slice from a DataFrame.
Try using .loc[row_indexer,col_indexer] = value instead
Run Code Online (Sandbox Code Playgroud)
所以我试过:
df.loc[: , "ID"] = '>'
Run Code Online (Sandbox Code Playgroud)
出现了同样的错误信息
我应该如何纠正它?
谢谢
我有一个 .bat 文件,在我做的文件中:
to-csv.vb在文件上我被困在第 6 步。这是我的代码:
cd "Python\test1"
copy "Python\test1\"*.xls* "Python\test1\move"
FOR /f "delims=" %%i IN ('DIR *.xls* /b') DO to-csv.vbs "%%i" "%%i.csv"
del "H2*.csv"
del "H6*.csv"
del "H3*.xlsx"
cd "H:\UCLAHealth\HIIN\Data Process\Python" #my python script1 is in this directory
python script1.py #this line didn't work.
Run Code Online (Sandbox Code Playgroud)
我可以执行步骤 1-5,但卡在步骤 6 上。在 .bat 文件中运行 Python 脚本的正确语法是什么?