IIUCを使用できstr.extract
:
print (df)
data
0 SubjectUserName=myuser, SubjectDomainName=XX, ...
1 SubjectUserName=myuser, SubjectDomainName=XX, ...
#temporaly display with of one column to 100
with pd.option_context('display.max_colwidth', 100):
print (df.data)
0 SubjectUserName=myuser, SubjectDomainName=XX, TargetUserName=XXXXX, TargetDomainName=XXXXX
1 SubjectUserName=myuser, SubjectDomainName=XX, TargetUserName=XXXXX, TargetDomainName=XXXXX
Name: data, dtype: object
print (df.data.str.extract('SubjectUserName=(.*), SubjectDomainName', expand=False))
0
0 myuser
1 myuser
別の可能な解決策は、4
列に,
(デフォルトの区切り)でread_csv
と分割データを使用して、replace
です:その真、
import pandas as pd
import numpy as np
from pandas.compat import StringIO
temp=u"""SubjectUserName=myuser, SubjectDomainName=XX, TargetUserName=XXXXX, TargetDomainName=XXXXX
SubjectUserName=myuser, SubjectDomainName=XX, TargetUserName=XXXXX, TargetDomainName=XXXXX
"""
#after testing replace 'StringIO(temp)' to 'filename.csv'
df = pd.read_csv(StringIO(temp), skipinitialspace=True, names=['SubjectUserName','SubjectDomainName','TargetUserName','TargetDomainName'])
print (df)
SubjectUserName SubjectDomainName TargetUserName \
0 SubjectUserName=myuser SubjectDomainName=XX TargetUserName=XXXXX
1 SubjectUserName=myuser SubjectDomainName=XX TargetUserName=XXXXX
TargetDomainName
0 TargetDomainName=XXXXX
1 TargetDomainName=XXXXX
print (df.SubjectUserName.str.replace('SubjectUserName=', ''))
0 myuser
1 myuser
Name: SubjectUserName, dtype: object
実際のデータのサンプルを提供する方がよいでしょう。あるいは、テストデータフレームを作成して私が提案する可能性のあるソリューションを試すことができるような代表者。 – piRSquared
'SubjectUserName'などが関連する詳細である場合、それらを1つの列にまとめて格納するのではなく、別々の列(および/またはインデックス)にエントリとして格納します。あなたのデータ構造はあなたが使いたいもののために設計されていないようです。 –