python - 向下迭代熊猫系列,如果字符串的第一个位置不是“1”,则在第一次出现空间时拆分到新列
问题描述
我想要一些帮助,在只有一列的很长的字符串中清除一些数据。在这些长字符串中是由空格分隔的数据位。但是,在所需信息之间会发现一些额外字符(在某些行/索引上)。我已经整理了一个数据框示例来显示正在发生的事情。
发生了什么:代码中的最后一行将循环遍历系列并将字符串开头与第一个空格之间的第一个值分开。然后将该值移动到 new_col。它在每一行中循环,在某些行中捕获“1”,在其他行中捕获随机字符。
我希望发生的事情:以“1”开头的行不理会。以非“1”开头的行移至新列。这将允许我重新对齐我的数据并纠正空格,直到下一次打嗝。希望我能带走我在这里学到的东西并继续前进。
我试图做的事情:我试图用一个 for 循环来解决问题,该循环将识别第一个位置不是“1”转到 else 语句并调用该行以在第一个空格处拆分数据。我收到一个 ValueError: Columns must be the same length as key error at the line after the else 语句。我假设我正在尝试调用数据框列,但 for 循环正在从变量“line”工作。只是不确定。
import pandas as pd
from pandas import DataFrame, Series
file = {'Test': ['1 RTWXA LC WTHML',
'2TE7 1 RHRRA LY HGHRL',
'1 WJKFD LF LPKRF',
'ATEGR/5 1 WJFTA LC TRGEH',
'1 POKJD LD PLERT',
'4ARF/3 1 EDFRT TG IUYHT' ] }
df = pd.DataFrame(file)
# ----Questionable Code Starts-----
df[['new-col','Test']] = (df["Test"].str.extract("([^\s]*)\s?(1.*)"))
# ----Questionable Code Ends-------
# below line will split (using spaces) at one occurrence only.
# creates new column (misc_col) and places data within keeping row/index
# integrity.
# df[['new_col','Test']] = df.Test.str.split(" ", 1, expand=True)
print(df)
What's Happening: What I would like:
Test new_col Test new_col
0 RTWXA LC WTHML 1 0 1 RTWXA LC WTHML
1 1 RHRRA LY HGHRL 2TE7 1 1 RHRRA LY HGHRL 2TE7
2 WJKFD LF LPKRF 1 2 1 WJKFD LF LPKRF
3 1 WJFTA LC TRGEH ATEGR/5 3 1 WJFTA LC TRGEH ATEGR/5
4 POKJD LD PLERT 1 4 1 POKJD LD PLERT
5 1 EDFRT TG IUYHT 4ARF/3 5 1 EDFRT TG IUYHT 4ARF/3
与往常一样,我很感激你能提供的任何帮助,让我度过这个难关。
谢谢
解决方案
您可以使用pd.Series.str.extract
:
print (df["Test"].str.extract("([^\s]*)\s?(1.*)"))
0 1
0 1 RTWXA LC WTHML
1 2TE7 1 RHRRA LY HGHRL
2 1 WJKFD LF LPKRF
3 ATEGR/5 1 WJFTA LC TRGEH
4 1 POKJD LD PLERT
5 4ARF/3 1 EDFRT TG IUYHT
推荐阅读
- ios - 斯威夫特:如何设置两个日期之间的照片范围?
- android - 在 Android 8 上。+:找不到证书路径的信任锚
- reactjs - 如何在一个组件中使用多个 ReactPixel.track('abc')?
- java - 如何在单独的类中将类字段从主类传递到 Spring 控制器?
- javascript - 是否可以显示依赖项的包版本?
- css - svg 文件中星星的旋转动画
- docker - 如何为 dotnet MVC 应用程序配置默认端口?
- spring-boot - spring boot swagger springfox 为 oauth/token 端点生成无效规范
- php - 如何在 Yii2 中为不可访问网络的文件夹设置别名
- c# - 如何将控件(按钮,...)引用从 Labview 传递到 C#(VisualStudio)