我有一个工作脚本,可以在文件中创建每行文本的数组。此数据将传递给pandas Series()
。函数startswith("\n")
用于为每个字符串返回布尔True
或False
,以确定它是否以\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
答案 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')]))
应该从问题中替换整个代码块。