我的数据框包含一个带有压缩数值的列。
final_table.df ##Dataframe
final_table.df$insta_followers ##Column
它包含两组我需要更改的格式化值:
1。)一个像10K的值,我可以用“K”代替000
2。)我无法解决的一个值,如9.3K,我需要成为9300
如何在我的行中将9.3K等值替换为9300?
答案 0 :(得分:1)
您可以从矢量中移除K并将其转换为数字变量
x<-c("9.3K","10K")
substring(x,1,nchar(x)-1) # removes the last character "9.3" "10"
as.numeric(substring(x,1,nchar(x)-1))*1000 # turn into a numeric and multiply by 1000
9300 10000
如果您的值不包含K
,例如92
,那么您可以使用ifelse
命令,例如
as.numeric(ifelse(grepl("K",x),as.numeric(substring(x,1,nchar(x)-1))*1000 ,x))
如果x
包含K
以上述方式转换,则返回x
答案 1 :(得分:0)
使用“strsplit”可以解决这个问题。这是一个例子
def main():
with open("input.csv") as f:
rows = [
tuple(int(x) for x in line.strip().split("\t"))
for line in f
if line.strip()
]
rows.sort()
with open("output.csv", "w") as f:
for row in rows:
f.write("{}\n".format("\t".join(str(x) for x in row)))
main()
$ cat input.csv
196 242 3 881250949
186 302 3 891717742
22 377 1 878887116
244 51 2 880606923
cat output.csv
22 377 1 878887116
186 302 3 891717742
196 242 3 881250949
244 51 2 880606923
我希望这会有效,如果不通知我的话!
答案 2 :(得分:0)
我开始介绍三种不同的解决方案,但我认为这是最干净,最简单,最容易理解的。如果你有更多的格式而不仅仅是1&amp; 2但它应该适用于那些。
df$followers <- ifelse(substr(df$followers, 2, 2)==".", # if second char is "."
gsub("K", "00", df$followers), # replace K with 00
gsub("K", "000", df$followers)) # else replace K with 000
df$followers <- as.numeric(df$followers) # convert to numeric at the end