小编cal*_*yte的帖子

在for循环中使用pandas .append

我将行附加到for循环中的pandas DataFrame,但最后数据帧始终为空.我不想将行添加到数组然后调用DataFrame构造函数,因为我的实际for循环处理大量数据.我也尝试过pd.concat没有成功.任何人都可以强调我缺少什么使附加语句有效吗?这是一个虚拟的例子:

import pandas as pd
import numpy as np

data = pd.DataFrame([])

for i in np.arange(0, 4):
    if i % 2 == 0:
        data.append(pd.DataFrame({'A': i, 'B': i + 1}, index=[0]), ignore_index=True)
    else:
        data.append(pd.DataFrame({'A': i}, index=[0]), ignore_index=True)

print data.head()

Empty DataFrame
Columns: []
Index: []
[Finished in 0.676s]
Run Code Online (Sandbox Code Playgroud)

python concat append pandas

24
推荐指数
2
解决办法
5万
查看次数

Pandas read_fwf:指定数据类型

我正在分块读取一个巨大的固定宽度文本文件,并将数据导出为 csv。因为pandas.read_fwf不允许指定数据类型,所以我想知道还有什么其他方法可以强制列为字符串。原因是 pandas 推断某些列是浮动的,即使它们不是浮动的,而且我不希望.0在列中出现浮动。

使用data[column] = data[column].astype(str)没有帮助,因为它不会消除小数。将 float64 数据类型的列转换为 int 也不起作用,因为 NA 无法转换。有任何想法吗?

这是我的代码片段:

dat = pd.read_fwf(file_to_read,colspecs=cols,header=None,chunksize=100000,names=header)
#First chunk
data.info()
Int64Index: 100000 entries, 0 to 99999
Columns: 562 entries,
dtypes: float64(405), int64(4), object(153)
memory usage: 429.5+ MB

for column in data.columns:
    if data[column].dtype == 'float64':
        data[column] = data[column].astype(int)
    else:
        pass
Run Code Online (Sandbox Code Playgroud)

我可以这样做str().replace('.0',''),但我想找到一种比遍历列更简单的方法,这需要花费大量时间。

python pandas dtype

6
推荐指数
1
解决办法
9356
查看次数

正则表达式:替换字符串中的逗号,Python

以某种方式对正则表达式在python中的工作方式感到困惑,我希望替换前面带有字母的字符串中的所有逗号,后跟字母或空格.例如:

2015,1674,240/09,PEOPLE V. MICHAEL JORDAN,15,15
2015,2135,602832/09,DOYLE V ICON, LLC,15,15
Run Code Online (Sandbox Code Playgroud)

第一行有效地有6列,而第二行有7列.因此,我试图用空格(NL)替换第二行中的(N,L)之间的逗号,如下所示:

2015,2135,602832/09,DOYLE V ICON LLC,15,15
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所尝试的,但没有成功:

new_text = re.sub(r'([\w],[\s\w|\w])', "", text) 
Run Code Online (Sandbox Code Playgroud)

我错的任何想法?

非常感谢帮助!

python regex string replace

3
推荐指数
1
解决办法
1452
查看次数

标签 统计

python ×3

pandas ×2

append ×1

concat ×1

dtype ×1

regex ×1

replace ×1

string ×1