我试图根据逗号/空格分隔将列拆分为多个列.
我的数据框目前看起来像
KEYS 1
0 FIT-4270 4000.0439
1 FIT-4269 4000.0420, 4000.0471
2 FIT-4268 4000.0419
3 FIT-4266 4000.0499
4 FIT-4265 4000.0490, 4000.0499, 4000.0500, 4000.0504,
Run Code Online (Sandbox Code Playgroud)
我想要
KEYS 1 2 3 4
0 FIT-4270 4000.0439
1 FIT-4269 4000.0420 4000.0471
2 FIT-4268 4000.0419
3 FIT-4266 4000.0499
4 FIT-4265 4000.0490 4000.0499 4000.0500 4000.0504
Run Code Online (Sandbox Code Playgroud)
我的代码目前删除了KEYS列,我不知道为什么.任何人都可以改进或帮助解决问题吗?
v = dfcleancsv[1]
#splits the columns by spaces into new columns but removes KEYS?
dfcleancsv = dfcleancsv[1].str.split(' ').apply(Series, 1)
Run Code Online (Sandbox Code Playgroud) 我有一个现有的解决方案,可以将一列的数据帧拆分为 2 列。
df['A'], df['B'] = df['AB'].str.split(' ', 1).str
Run Code Online (Sandbox Code Playgroud)
最近,我收到以下警告 FutureWarning: Columnar iteration over characters will be deprecated in future releases.
如何修复此警告?
我正在使用 python 3.7
我有一个csv文件,其中有几列我首先用冒号(;)分隔.但是,一列由管道分隔 我想分界这个专栏并创建新专栏.
输入:
Column 1 Column 2 Column 3
1 2 3|4|5
6 7 6|7|8
10 11 12|13|14
Run Code Online (Sandbox Code Playgroud)
期望的输出:
Column 1 Column 2 ID Age Height
1 2 3 4 5
6 7 6 7 8
10 11 12 13 14
Run Code Online (Sandbox Code Playgroud)
我的代码到目前为止第一次划分; 然后转换为DF(这是我想要的结束格式)
delimit = list(csv.reader(open('test.csv', 'rt'), delimiter=';'))
df = pd.DataFrame(delimit)
Run Code Online (Sandbox Code Playgroud) 我正在从几个网站上抓取一些数据,并使用 Pandas 对其进行修改。
在前几个数据块上它运行良好,但后来我收到此错误消息:
Traceback(most recent call last):
File "data.py", line 394 in <module> df2[['STATUS_ID_1','STATUS_ID_2']] = df2['STATUS'].str.split(n=1, expand=True)
File "/home/web/.local/lib/python2.7/site-packages/pandas/core/frame.py, line 2326, in __setitem__ self._setitem_array(key,value)
File "/home/web/.local/lib/python2.7/site-packages/pandas/core/frame.py, line 2350, in _setitem_array
raise ValueError("Columns must be same length as key') ValueError: Columns must be same length as key
Run Code Online (Sandbox Code Playgroud)
我的代码在这里:
df2 = pd.DataFrame(datatable,columns = cols)
df2['FLIGHT_ID_1'] = df2['FLIGHT'].str[:3]
df2['FLIGHT_ID_2'] = df2['FLIGHT'].str[3:].str.zfill(4)
df2[['STATUS_ID_1','STATUS_ID_2']] = df2['STATUS'].str.split(n=1, expand=True)
Run Code Online (Sandbox Code Playgroud)
EDIT-jezrael :我使用了你的代码,并从中打印出来:我希望通过这个我们可以找到问题出在哪里..因为当脚本遇到这个拆分问题时,它似乎是随机的..
0 1
2 Landed 8:33 AM
3 Landed 9:37 AM
4 Landed 9:10 AM
5 …Run Code Online (Sandbox Code Playgroud) 我试图使用re.split()将pandas数据框中的单个变量拆分为另外两个变量.
我的数据如下:
xg
0.05+0.43
0.93+0.05
0.00
0.11+0.11
0.00
3.94-2.06
Run Code Online (Sandbox Code Playgroud)
我想创造
e a
0.05 0.43
0.93 0.05
0.00
0.11 0.11
0.00
3.94 2.06
Run Code Online (Sandbox Code Playgroud)
我可以使用for循环和索引来完成此操作.
for i in range(len(df)):
if df['xg'].str.len()[i] < 5:
df['e'][i] = df['xg'][i]
else:
df['e'][i], df['a'][i] = re.split("[\+ \-]", df['xg'][i])
Run Code Online (Sandbox Code Playgroud)
然而,这很慢,我不相信这是一个很好的方法,我正在努力提高我的代码/ python理解.
我尝试使用np.where编写它,或使用列表理解或应用lambda进行了各种尝试,但我不能让它运行得太多.我认为我遇到的所有问题都是因为我试图将函数应用于整个系列而不是位置值.
如果有人知道一个比我丑陋的循环更好的方法,我会非常感兴趣.
我有一个像下面这样的pandas数据帧:
A B
US,65,AMAZON 2016
US,65,EBAY 2016
Run Code Online (Sandbox Code Playgroud)
我的目标是看起来像这样:
A B country code com
US.65.AMAZON 2016 US 65 AMAZON
US.65.AMAZON 2016 US 65 EBAY
Run Code Online (Sandbox Code Playgroud)
我知道在这里和这里之前已经问过这个问题,但它们都不适合我.我试过了:
df['country','code','com'] = df.Field.str.split('.')
Run Code Online (Sandbox Code Playgroud)
和
df2 = pd.DataFrame(df.Field.str.split('.').tolist(),columns = ['country','code','com','A','B'])
Run Code Online (Sandbox Code Playgroud)
我错过了什么吗?任何帮助深表感谢.
还有其他类似的问题,但不同之处在于我的数据框架已经有很多列,其中只有一列需要拆分.
我有一个大型数据帧(数百列,数百万行).当在字符串中找到字符("|")时,我想拆分其中一列.
所有值只有一个"|".
对于固定长度,我会这样做:df ['StateInitial'] = df ['state'].str [:2]
我希望我可以用string.index("|")替换2,但是如何调用字符串呢?
对熊猫来说很新,所以对解决方案的任何解释都表示赞赏.
我有一个数据帧,如
Company Zip State City
1 *CBRE San Diego, CA 92101
4 1908 Brands Boulder, CO 80301
7 1st Infantry Division Headquarters Fort Riley, KS
10 21st Century Healthcare, Inc. Tempe 85282
15 AAA Jefferson City, MO 65101-9564
Run Code Online (Sandbox Code Playgroud)
我想将我的数据中的Zip State city列拆分为3个不同的列.使用这篇文章Pandas DataFrame的答案,如何将一个列拆分为两个如果我没有第一列,我可以完成此任务.编写正则表达式来捕获所有公司只会导致我捕获数据中的所有内容.
我也试过了
foo = lambda x: pandas.Series([i for i in reversed(x.split())])
data_pretty = data['Zip State City'].apply(foo)
Run Code Online (Sandbox Code Playgroud)
但这导致我松开公司列并将多个单词的城市名称拆分为不同的列.
如何在保留公司列数据的同时拆分我的最后一列?
我的问题更多的是关于前一篇文章中描述的方法/语法,它解决了实现将字符串值拆分为列表并将每个列表项分配给新列的相同目标的不同方法.这是帖子: Pandas DataFrame,我如何将一个列分成两个
DF:
GDP
Date
Mar 31, 2017 19.03 trillion
Dec 31, 2016 18.87 trillion
Run Code Online (Sandbox Code Playgroud)
脚本1 +输出:
>>> df['GDP'], df['Units'] = df['GDP'].str.split(' ', 1).str
>>> print(df)
GDP Units
Date
Mar 31, 2017 19.03 trillion
Dec 31, 2016 18.87 trillion
Run Code Online (Sandbox Code Playgroud)
脚本2 +输出:
>>> df[['GDP', 'Units']] = df['GDP'].str.split(' ', 1, expand=True)
>>> print(df)
GDP Units
Date
Mar 31, 2017 19.03 trillion
Dec 31, 2016 18.87 trillion
Run Code Online (Sandbox Code Playgroud)
脚本3 +输出:
>>> df['GDP'], df['Units'] = df['GDP'].str.split(' ', 1, expand=True)
>>> print(df)
GDP Units
Date …Run Code Online (Sandbox Code Playgroud) 我有一个数据框,其中一列包含“键=值”格式的多个信息。该列中可以出现近一百种不同的“key=value”,但为了简单起见,我将仅使用 4 ( _browser, _status, _city, tag)
id name properties
0 A {_browser=Chrome, _status=TRUE, _city=Paris}
1 B {_browser=null, _status=TRUE, _city=London, tag=XYZ}
2 C {_status=FALSE, tag=ABC}
Run Code Online (Sandbox Code Playgroud)
如何将这种拆分属性字符串列转换为多列?
预期的输出是:
id name _browser _status _city tag
0 A Chrome TRUE Paris
1 B null TRUE London XYZ
2 C FALSE ABC
Run Code Online (Sandbox Code Playgroud)
注意:此值也可以包含空格(例如_city=Rio de Janeiro)
我有df这样的,
Owner Messages
AAA (YY) Duplicates
AAA Missing Number; (VV) Corrected Value; (YY) Duplicates
AAA (YY) Duplicates
BBB (YY) Duplicates
BBB Missing Measure; Missing Number
Run Code Online (Sandbox Code Playgroud)
当我做这样的正常时groupby,
df_grouped = df.groupby([' Owner', 'Messages']).size().reset_index(name='count')
df_grouped
Run Code Online (Sandbox Code Playgroud)
我按预期得到了这个,
Owner Messages count
0 AAA (YY) Duplicates 2
1 AAA Missing Number; (VV) Corrected Value; (YY) Duplicates 1
2 BBB (YY) Duplicates 1
3 BBB Missing Measure; Missing Number 1
Run Code Online (Sandbox Code Playgroud)
但是,我需要一些东西(所需的输出),就像这个;内部Messages列拆分一样.
Owner Messages count
0 AAA (YY) Duplicates 3 …Run Code Online (Sandbox Code Playgroud) 我是新手,我需要将包含两个字符串的列拆分为 2 列,如下所示:
初始数据帧:
Full String
0 Orange Juice
1 Pink Bird
2 Blue Ball
3 Green Tea
4 Yellow Sun
Run Code Online (Sandbox Code Playgroud)
最终数据框:
First String Second String
0 Orange Juice
1 Pink Bird
2 Blue Ball
3 Green Tea
4 Yellow Sun
Run Code Online (Sandbox Code Playgroud)
我试过这个但不起作用:
df['First String'] , df['Second String'] = df['Full String'].str.split()
Run Code Online (Sandbox Code Playgroud)
和这个:
df['First String', 'Second String'] = df['Full String'].str.split()
Run Code Online (Sandbox Code Playgroud)
如何使它工作?谢谢!!!
pandas ×12
python ×11
dataframe ×8
python-3.x ×4
split ×4
csv ×2
group-by ×1
loops ×1
regex ×1
web-scraping ×1