pandas数据帧中的回车线和分割单元值

2024-10-03 02:44:27 发布

您现在位置:Python中文网/ 问答频道 /正文

我的数据在pandas数据框中,每行的结构如下:

> df={'date1': '0 \r Created February 21, 2015', 'amt': '$50,815 raised by 498 donors'}

我希望它看起来像这样

^{pr2}$

df.date1,我的许多单元格包含回车符,有时一行有几个回车(在字符串的开头和结尾)。有没有办法从整个数据帧中删除它们?在

在某些情况下,这是可行的:

> df['date1'] = df['date1'].map(lambda x: str(x).lstrip('\r Created').rstrip('...'))

但这并不总是有效的(来自diff列的代码)。例如,以下任何一项都不会删除\r或“,”

> df['raised2'][0] = ,50,815,\r 

> df['raised2'] = df['raised2'].map(lambda x: str(x).lstrip('\r').rstrip('\r'))

> rm_carriage = lambda x: re.findall("^/\r*(.*?)/\r*$", str(x))

> df.applymap(carriage_function)

这让我得到了月份,但同样的逻辑不会得到我的日期或年份

> df['month'] = df['date1'].map(lambda x: x.split()[0])

> df['day'] = df['date1'].map(lambda x: x.split()[1])   #IndexError

Tags: 数据lambdamappandasdf结构splitcreated
1条回答
网友
1楼 · 发布于 2024-10-03 02:44:27

取决于确切的数据,但对于您的示例来说,这应该是可行的

df['date1_splitted'] = df.date1.str.replace('\r|,', ' ').apply(lambda x: filter(None, x.split(' ')))
df['year'] = df.date1_splitted.apply(lambda x: x[2])
df['day'] = df.date1_splitted.apply(lambda x: x[1])
df['month'] = df.date1_splitted.apply(lambda x: x[0])
df['amt_splitted'] = df.amt.str.replace('\r|,', '').apply(lambda x: x.split(' '))
df['cur'] = df.amt_splitted.apply(lambda x: x[0][0])
df['raised'] = df.amt_splitted.apply(lambda x: x[0][1:])
df['num_donors'] = df.amt_splitted.apply(lambda x: x[-2])

相关问题 更多 >