Python 2.7 单引号替换,pandas/python2.7中空整数的处理

Python 2.7 单引号替换,pandas/python2.7中空整数的处理,python-2.7,replace,pandas,nan,Python 2.7,Replace,Pandas,Nan,刚接触Pandas/Python,我不得不编写一些笨拙的代码。我将非常感谢您对如何做这件事和加快它的任何意见(我将为千兆字节的数据做这件事) 因此,我正在使用pandas/python进行一些ETL工作。行计算是执行的,所以我需要在流程中将它们作为数字类型(省略此部分)。我需要将一些字段输出为数组,并去掉单引号、nan和“.0” 第一个问题,在R中是否有一种方法可以将这些if-else语句向量化?其次,肯定有更好的方法删除“.0”。数字类型中的out pandas/numpy句柄为空似乎存在一些

刚接触Pandas/Python,我不得不编写一些笨拙的代码。我将非常感谢您对如何做这件事和加快它的任何意见(我将为千兆字节的数据做这件事)

因此,我正在使用pandas/python进行一些ETL工作。行计算是执行的,所以我需要在流程中将它们作为数字类型(省略此部分)。我需要将一些字段输出为数组,并去掉单引号、nan和“.0”

第一个问题,在
R
中是否有一种方法可以将这些if-else语句向量化?其次,肯定有更好的方法删除“.0”。数字类型中的out pandas/numpy句柄为空似乎存在一些主要问题

最后,
.replace
在单引号的数据帧上似乎不起作用。我错过什么了吗?这是示例代码,如果您对此有任何疑问,请告诉我:

import pandas as pd

# have some nulls and need it in integers
d = {'one' : [1.0, 2.0, 3.0, 4.0],'two' : [4.0, 3.0, NaN, 1.0]}
dat = pd.DataFrame(d)

# make functions to get rid of the ".0" and necessarily converting to strings
def removeforval(val):
    if str(val)[-2:] == ".0":
        val = str(val)[:len(str(val))-2]
    else:
        val = str(val)
    return val
def removeforcol(col):
    col = col.apply(removeforval)
    return col
dat = dat.apply(removeforcol,axis=0)
# remove the nan's
dat = dat.replace('nan','')

# need some fields in arrays on a postgres database
quoted  = ['{' + str(tuple(x))[1:-1] + '}'  for x in dat.to_records(index=False)]
print "Before single quote removal"
print quoted

# try to replace single quotes using DataFrame's replace
quoted_df = pd.DataFrame(quoted).replace('\'','')
quoted_df = quoted_df.replace('\'','')
print "DataFrame does not seem to work"
print quoted_df

# use a loop
for item in range(len(quoted)):
    quoted[item] = quoted[item].replace('\'','')
print "This Works"
print quoted

谢谢大家!

您知道,这样制作一个字符串非常奇怪。这根本不是有效的python。你拿这个干什么?你为什么要把它串起来

修改

In [144]: list([ "{%s , %s}" % tup[1:] for tup in df.replace(np.nan,0).astype(int).replace(0,'').itertuples() ])
Out[144]: ['{1 , 4}', '{2 , 3}', '{3 , }', '{4 , 1}']

你能显示你想要的输出吗?[{4,1},{2,3},{3,},{4,1}]就像最后一个输出一样我弄错了它是这样的一个列表[{1,4},{2,3},{3,},{4,1}],好的,
{
也很奇怪,这是一个字典(而不是元组引用)我对Python的信心得到了恢复。2个微小的偏差。实际上,在脚本运行之前,我不知道有多少列。我只是将所需的字符串输入到您的代码中。另外,我在整个数据帧中还有许多其他字段。现在我正在从由其他逻辑确定的列名列表中进行子设置。我仍然想知道是否有我需要的列这是一种将该逻辑矢量化的方法。例如,如果列表中的columnname,则执行此操作,否则执行此操作,而不使用该构造。整个操作要点是通过psql COPY保存并加载到postgres,这是SQL数组的格式。您最好只使用
df.to_SQL()
(在即将到来的0.12中重命名),请参见此处: