小编Win*_*ags的帖子

Pandas:将DataFrame写入csv时的列的随机顺序

我正在研究一种不断写入的爬行功能output.csv.如果是第一次传递,它会将带有列的第一行写入header空白文件.对于以下传递,它将append没有标题.

我的问题是列顺序混乱.我希望他们遵循我指定的顺序df = pd.DataFrame.

import pandas as pd

input = pd.read_csv(input.csv, delimiter=",")

run = 0

def crawl(x):

    global run
    run = run + 1

    #Assign strings a, b, c

    df = pd.DataFrame({"A": [a], "B": [b], "C": [c]})

    if run == 1:
        df.to_csv("output.csv")
    if run != 1:
        df.to_csv("output.csv", header=None, mode="a")

input["X"].apply(crawl, axis=1)
Run Code Online (Sandbox Code Playgroud)

python pandas

4
推荐指数
1
解决办法
2037
查看次数

Python:函数中的"多个"多个参数

我是一个Python新手,但我知道我可以在函数中使用可变数量的多个参数*args.

此脚本查找word任意数量的字符串*sources:

def find(word, *sources):
    for i in list(sources):
        if word in i:
            return True

source1 = "This is a string"
source2 = "This is Wow!"

if find("string", source1, source2) is True:
    print "Succeed"
Run Code Online (Sandbox Code Playgroud)

但是,是否可以在一个函数中指定"多个"多个参数(*args)?在这种情况下,这将寻找多个*words倍数*sources.

如,比喻:

if find("string", "Wow!", source1, source2) is True:
    print "Succeed"
else:
    print "Fail"
Run Code Online (Sandbox Code Playgroud)

如何让脚本识别出什么是a word,什么应该是source

python arguments function

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

Pandas:在字符串匹配后获取列中的下一个值

字符串匹配,如何获取列中的下一个值

regex = 'ABC'
row_match = df["column1"].str.match(regex, case=False)
Run Code Online (Sandbox Code Playgroud)

即如何获取同一列中下一行的值,在ABC可以找到字符串的那一行之后?

我尝试迭代一行iterrows,但我无法让它工作.

python pandas

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

Pandas read_csv converter - 如何处理异常(literal_eval SyntaxError)

进入Pandas DataFrame,我正在读一个csv文件,看起来像:

          A              B
  +--------------+---------------+
0 |              | ("t1", "t2")  |
  +--------------+---------------+
1 | ("t3", "t4") |               |
  +--------------+---------------+
Run Code Online (Sandbox Code Playgroud)

其中两个单元格中包含文字元组,其中两个单元格为空.

df = pd.read_csv(my_file.csv, dtype=str, delimiter=',',
    converters={'A': ast.literal_eval, 'B': ast.literal_eval})
Run Code Online (Sandbox Code Playgroud)

转换器ast.literal_eval可以很好地将文字元组转换为代码中的Python元组对象 - 但只要没有空单元格.因为我有空单元格,我得到错误:

SyntaxError:解析时意外的EOF

根据这个S/O答案,我应该尝试捕获空字符串的SyntaxError异常:

ast使用compile将源字符串(必须是表达式)编译成AST.如果源字符串不是有效表达式(如空字符串),则将通过编译引发SyntaxError.

但是,我不确定如何捕获单个单元格的异常read_csv converters.

最好的方法是什么?是否有其他方法可以将空字符串/单元格转换为literal_eval可接受或忽略的对象?

注意:我的理解是在可读文件中使用文字元组并不总是最好的,但在我看来它很有用.

python csv literals pandas

3
推荐指数
2
解决办法
868
查看次数

在Python中有条件地重命名字符串

如何在Python中创建变量字符串的条件重命名?

比方说我有:

fruit = "Apfel"
Run Code Online (Sandbox Code Playgroud)

如果它是"Apfel",我想将其重命名为" Apple".

或者,变量可以返回不同的字符串.

fruit = "Erdbeere"
Run Code Online (Sandbox Code Playgroud)

如果是这样,我想将其重命名为" Strawberry".

python string

2
推荐指数
1
解决办法
137
查看次数

Pandas 选择并写入包含特定文本的行

我只想在包含 column 中特定文本的数据框中保留行"col"。在这个例子中任一"WORD1""WORD2"

df = df["col"].str.contains("WORD1|WORD2")
df.to_csv("write.csv")
Run Code Online (Sandbox Code Playgroud)

这将返回TrueFalse。但是我如何让它写出与这些标准匹配的整行,而不仅仅是呈现布尔值?

python pandas

2
推荐指数
1
解决办法
5129
查看次数

如果变量中的"x",Python轻量级不区分大小写

我正在寻找一种类似于if "x" in variable:不区分大小写和轻量级的方法来实现.

我已经尝试了一些这里的实现,但它们并不适合我的用法:Case不敏感'in' - Python

我想使下面的代码不区分大小写:

description = "SHORTEST"

if "Short" in description:
    direction = "Short"
Run Code Online (Sandbox Code Playgroud)

优选地,不必将字符串转换为例如小写字母.或者如果我必须转换它,我想保持description其原始状态 - 即使它是大写和小写混合.

对于我的使用,这是件好事,这种方法是通过识别非歧视"Short""Shorter""Shortest".

python

2
推荐指数
1
解决办法
164
查看次数

删除unicode [u']

我有这个字符串,从网页输入.

s = "[u'967208', u'411600', u'460273']"
Run Code Online (Sandbox Code Playgroud)

我想删除括号[ ]u'.

我也想制作new line breaks逗号而不是逗号,.

我花了很多时间寻找解决方案,包括编码和正则表达式,但我似乎无法让它工作.

更新:这是我用来检索字符串的内容:

import selenium
import re
input = webdriver.find_element_by_class_name("class_name")
s = re.findall("((?<=\()[0-9]*)", input.text)
Run Code Online (Sandbox Code Playgroud)

python unicode-string python-2.7

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

Python并不是None

我在使用这段代码时遇到了一些麻烦:

if not fundbenchmark.endswith(("Index", "INDEX")) and fundbenchmark is not None:
    fundbenchmark = "%s%s" % (fundbenchmark, " Index")
Run Code Online (Sandbox Code Playgroud)

追溯:

AttributeError: 'NoneType' object has no attribute 'endswith'
Run Code Online (Sandbox Code Playgroud)

当出现显然这个错误fundbenchmarkNone.暗示存在问题and fundbenchmark is not None:

我在这个假设中是正确的还是可以在其他地方找到解释?

python

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

Pandas:过滤在几个特定列中的任何一个中具有 Null/None/NaN 值的行

我有一个 csv 文件,其中有很多字符串"NULL",在几列中。

我想选择(过滤器),其具有行"NULL"价值的任何几个特定列。

例子:

["Firstname"]   ["Lastname"]    ["Profession"]
"Jeff"          "Goldblum"      "NULL"
"NULL"          "Coltrane"      "Musician"
"Richard"       "NULL"          "Physicist"
Run Code Online (Sandbox Code Playgroud)

在这里,我想过滤(选择)列中df具有值"NULL"的行"Firstname" "Lastname"– 但如果值"NULL""Profession".

这设法None在一列中过滤字符串(不是):

df = df[df["Firstname"].str.contains("NULL", case=False)]
Run Code Online (Sandbox Code Playgroud)


然而,我试图将"NULL"字符串转换为None通过:

df = df.where((pd.notnull(df)), None)
df.columns = df.columns.str.lower()
Run Code Online (Sandbox Code Playgroud)

鉴于上述str.contains过滤,也许"NULL"在转换为None?

python filtering pandas

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