我需要连接两个数据帧df_a并且一个接一个地df_b使用相同数量的行(nRow)而不考虑任何键.这个功能类似于cbind在R programming language.每个数据帧中的列数可能不同.
结果数据帧将具有相同的行nRow数和列数,等于两个数据帧中的列数之和.换句话说,这是两个数据帧的盲列式连接.
import pandas as pd
dict_data = {'Treatment': ['C', 'C', 'C'], 'Biorep': ['A', 'A', 'A'], 'Techrep': [1, 1, 1], 'AAseq': ['ELVISLIVES', 'ELVISLIVES', 'ELVISLIVES'], 'mz':[500.0, 500.5, 501.0]}
df_a = pd.DataFrame(dict_data)
dict_data = {'Treatment1': ['C', 'C', 'C'], 'Biorep1': ['A', 'A', 'A'], 'Techrep1': [1, 1, 1], 'AAseq1': ['ELVISLIVES', 'ELVISLIVES', 'ELVISLIVES'], 'inte1':[1100.0, 1050.0, 1010.0]}
df_b = pd.DataFrame(dict_data)
Run Code Online (Sandbox Code Playgroud) 我需要删除所有行,其中第3列以后的元素都是NaN
df = DataFrame(np.random.randn(6, 5), index=['a', 'c', 'e', 'f', 'g','h'], columns=['one', 'two', 'three', 'four', 'five'])
df2 = df.reindex(['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'])
df2.ix[1][0] = 111
df2.ix[1][1] = 222
Run Code Online (Sandbox Code Playgroud)
在上面的例子中,我的最终数据框不会有行'b'和'c'.
df.dropna()在这种情况下如何使用?
这里提出了一个类似的问题: Python:使用groupby获取具有最大值的行
但是,即使在该组中有多个具有最大值的记录,我每组只需要一条记录.
在下面的例子中,我需要一个"s2"记录.对我来说哪一个并不重要.
>>> df = DataFrame({'Sp':['a','b','c','d','e','f'], 'Mt':['s1', 's1', 's2','s2','s2','s3'], 'Value':[1,2,3,4,5,6], 'count':[3,2,5,10,10,6]})
>>> df
Mt Sp Value count
0 s1 a 1 3
1 s1 b 2 2
2 s2 c 3 5
3 s2 d 4 10
4 s2 e 5 10
5 s3 f 6 6
>>> idx = df.groupby(['Mt'])['count'].transform(max) == df['count']
>>> df[idx]
Mt Sp Value count
0 s1 a 1 3
3 s2 d 4 10
4 s2 e 5 10
5 s3 f 6 …Run Code Online (Sandbox Code Playgroud) 给定一组包含数字的字符串,我如何找到那些超集的字符串.例如,如果字符串'139 24'和'139 277 24'出现,那么我想保持'139 277 24'为'139 24'可以在其中找到.这些数字也可以以字符串内的任何顺序出现.
'24'
'277'
'277 24'
'139 24'
'139 277 24'
'139 277'
'139'
'136 24'
'136 277 24'
'136 277'
'136'
'136 139 24'
'136 139 277 24'
'136 139 277'
'136 139'
'246'
Run Code Online (Sandbox Code Playgroud)
以下给出了上述数据的结果.
'136 139 277 24'
'246'
Run Code Online (Sandbox Code Playgroud)
编辑:我正在拆分每个字符串并将单个数字放在一个集合中,然后通过从整个列表创建的集合进行比较.我可以使用这种方法找到解决方案,但我认为应该有一些其他优雅的方法来执行相同的操作.
我正在尝试以下代码,并认为它变得越来越不必要.
#First create a set of tuples
allSeqsTuple = set()
for seq in allSeqs: #allSeqs store the sequences described above
x = seq.split()
allSeqsTuple.add(tuple(x))
#For each 'allSeqs', find if all the items in …Run Code Online (Sandbox Code Playgroud) bigString = "AGAHKGHKHASNHADKRGHFKXXX_I_AM_THERE_XXXXXMHHGRFSAHGSKHASGKHGKHSKGHAK"
smallString = "I_AM_HERE"
Run Code Online (Sandbox Code Playgroud)
我应该使用哪种有效的算法来查找与"smallString"紧密匹配的"bigString"的子字符串
output = "I_AM_THERE"
Run Code Online (Sandbox Code Playgroud)
与小字符串相比,输出可能具有很少的插入和删除.
编辑:找到一个很好的例子,非常接近我的问题:如何向正则表达式模糊搜索添加变量错误.蟒蛇
保存为pdf或其他格式时,我无法打开图表.始终如一地收到以下错误.我正在研究mac.
> plot(1:10)
> pdf('deleteIt.pdf')
> dev.off()
RStudioGD
2
> sessionInfo()
R version 2.15.1 (2012-06-22)
Platform: x86_64-apple-darwin9.8.0/x86_64 (64-bit)
locale:
[1] en_US.UTF-8/en_US.UTF-8/en_US.UTF-8/C/en_US.UTF-8/en_US.UTF-8
attached base packages:
[1] stats graphics grDevices utils datasets methods base
other attached packages:
[1] pROC_1.5.4 plyr_1.7.1
loaded via a namespace (and not attached):
[1] tools_2.15.1
Run Code Online (Sandbox Code Playgroud)
我收到以下错误.也和png和jpeg一起试过,但没有运气..
The file “deleteIt.pdf” could not be opened.
It may be damaged or use a file format that Preview doesn’t recognize.
Run Code Online (Sandbox Code Playgroud) 是否有任何其他更快的方法来查找索引位置的项目.
items = ['aaa','sss','ddd','fff','gggg','hhhh']
indices = [1,3,4]
My way:
[items[i] for i in indices]
Run Code Online (Sandbox Code Playgroud) 我有以下格式的条目(总共约8800万):
userid age test value
111 33 SODIUM 140
111 34 POTASSIUM 4.1
333 65.4 CHLORIDE 107
444 24 BICARBONATE 24
Run Code Online (Sandbox Code Playgroud)
我需要创建一个在快速查找value在最后一列,考虑到前三个项目(即userid,age,test).
重复查找此数据的最佳方法是什么?一个是我想到的是创建一个字典,其中keys的元组(userid,age,test)和值value.在过去,我使用了类似的方法,这种方法在更小的数据上非常慢.
在下面的可重现代码(最后一行)中,如果我将'Income'替换为'fieldToRemove',则'update'功能不起作用.如何使此功能起作用?我需要在循环中运行该行.
state.x77
tmpData = as.data.frame(state.x77)
colnames(tmpData)[4] = "Life.Exp"
colnames(tmpData)[6] = "HS.Grad"
cnames = colnames(tmpData)
cnames
lenCnames = length(cnames)
rhsOfFormula = paste(cnames[1:(length(cnames)-1)],collapse= "+")
lhsOfFormula = cnames[length(cnames)]
(fmla <- as.formula(paste(lhsOfFormula , " ~ ", rhsOfFormula )) )
modelTmp <- glm(formula = fmla, data=tmpData)
fieldToRemove = 'Income'
newModel <- update(modelTmp, .~.-Income )
Run Code Online (Sandbox Code Playgroud) 这里,如果第二个值相同,则认为两行是冗余的.是否有任何unix/linux命令可以实现以下功能.
1 aa
2 aa
1 ss
3 dd
4 dd
Run Code Online (Sandbox Code Playgroud)
结果
1 aa
1 ss
3 dd
Run Code Online (Sandbox Code Playgroud)
我通常使用以下命令,但它没有实现我想要的.
sort -k2 /Users/fahim/Desktop/delnow2.csv | uniq
Run Code Online (Sandbox Code Playgroud)
编辑:
我的文件大约有2500万行:使用@Steve建议的解决方案的时间:33秒.
$date; awk -F '\t' '!a[$2]++' myfile.txt > outfile.txt; date
Wed Nov 27 18:00:16 EST 2013
Wed Nov 27 18:00:49 EST 2013
Run Code Online (Sandbox Code Playgroud)
排序和独特是花费太多时间.等了5分钟后我退出了.
我正在一行读取一个巨大的制表符分隔文件,如果特定字段的值大于k,则保留该行.由于此字段存储为字符串,因此我将该值转换为int(x).我在特定行中收到以下错误.当我尝试打印该行时,我看到与此类似的条目.
ValueError: invalid literal for int() with base 10:
'\xc3\xd2u\xc4\x99\xc3\xc2\xe8v\x00\xcb\xa5T\x13\xc5F\xe7\x00\xc9*\x8e\xc5vV\xc0W\xe3\xc1\xee\xe2\xc0\xa3i\x00\xcc\r\x11\xc8\xaf\xb2\xc0\xa9+\xc2\x9b\x13\x00\xcb<\xbe\xc1C\x07\xc6\xd6%\xc0}\xd7\x00\xcc\xdc?\xc3%t\xc0o\x1a\x13\xc5#\x9e\x00\xcb.\xf6\xc5\xe5G\x00\xcb2\x00\x13\xc0N\xa5\xc2cr\x96\xec\x98-\xc6\x025\x00\xcd\x04\xff\xc0\xc6}\xc1+\xdf\xc1j\x14\xc0\xff+......'
Run Code Online (Sandbox Code Playgroud)
什么是检测此类线路或移除此类线路的有效方法?