在pandas系列数据中,如何根据函数返回的数据获取密钥?

时间:2018-05-01 06:02:20

标签: python pandas

我有一个工作脚本,可以在文件中创建每行文本的数组。此数据将传递给pandas Series()。函数startswith("\n")用于为每个字符串返回布尔TrueFalse,以确定它是否以\n(空行)开头。 我目前正在使用计数器i和条件语句迭代并匹配startswith()函数返回的位置。

import pandas as pd
import numpy as np
f = open('list-of-strings.txt','r')
lines = []
for line in f.xreadlines():
    lines.append(line)

s = pd.Series(lines)
i = 0
for b in s.str.startswith("\n"):
    if b == 0:
        print s[i],; i += 1
    else:
        i += 1

我意识到我正在从两个不同的方面看待这个问题。一个是由startswith()函数评估直接处理每个项目。由于startswith()函数返回布尔值,因此可以根据返回的值直接处理数据。像for each item in startswith(), if value returned is True, index = current_index, print s[index]这样的东西。

除了能够仅打印False评估为startswith()的字符串外,我如何从startswith()获取当前键值?

参考文献:
https://www.tutorialspoint.com/python_pandas/python_pandas_series.htm https://www.tutorialspoint.com/python_pandas/python_pandas_working_with_text_data.htm

1 个答案:

答案 0 :(得分:1)

您的问题似乎比标题中的问题更简单。您正在尝试获取某些谓词评估为正值的值的索引,而不是将索引传递给函数。

在熊猫,最后一个街区

i = 0
for b in s.str.startswith("\n"):
    if b == 0:
        print s[i],; i += 1
    else:
        i += 1

相当于

print(s[~s.str.startswith('\n')].values)

此外,你根本不需要Pandas:

print(''.join([l for l in in open('list-of-strings.txt','r') if not l.startswith('\n')]))

应该从问题中替换整个代码块。