【发布时间】:2020-05-22 16:55:56
【问题描述】:
假设一个字符串列表:
lst1 = ['A1 B1 C1', 'A2 B2 D1', 'S1 M1 A3', 'A4 B3 G1','H1 K1 W1']
我想通过在每个字符串中搜索特定值(如果可用)来创建一个表,然后填充一个 pandas 数据框。
像这样:
'A' 'B' 'C' 'D'
string1 A1 B1 C1 Nan
string2 A2 B2 Nan D1
string3 A3 Nan Nan Nan
string4 A4 B3 Nan Nan
string5 Nan Nan Nan Nan
为了在每个字符串中进行搜索,我将它们中的每一个拆分为一个列表,使其成为一个嵌套列表,以便在每个字符串中运行一个 for 循环以进行搜索。我的 RegEx 游戏不是太强,但我认为这可以通过对 RegEx 的良好处理来完成。
我当前的代码:
import pandas as pd
lst1 = ['A1 B1 C1', 'A2 B2 D1', 'S1 M1 A3', 'A4 B3 G1','H1 K1 W1']
modlst1 = []
for each in lst1:
modlst1.append(each.split())
rows = range(len(modlst1)) ### rows for each string
cols = ['A','B','C','D'] ### cols for each string
df = pd.DataFrame(index = rows, columns = cols)
df = df.fillna(0)
### Populating values
for each in rows:
for stuff in modlst1[each]:
if stuff.startswith('A'):
df['A'] = stuff
elif stuff.startswith('B'):
df['B'] = stuff
elif stuff.startswith('C'):
df['C'] = stuff
elif stuff.startswith('D'):
df['D'] = stuff
我对 Python 很陌生,所以我仍在学习字符串操作以及搜索和查找。我确信必须有更好的方法来做到这一点。当我尝试将它们放入数据框中时,我的解决方案无法正常工作,因为相同的值会不断填充在我的数据框中。但是当我这样做时:
if stuff.startswith('A'):
print(stuff)
循环运行良好,我得到不同的“A”、“B”、“C”、“D”值。 例如:(我不想这样)
'A' 'B' 'C' 'D'
string1 A1 B1 C1 Nan
string2 A1 B1 C1 D1
string3 A1 B1 C1 D1
string4 A1 B1 C1 D1
string5 A1 B1 C1 D1
【问题讨论】:
标签: python python-3.x regex string pandas