我有这个数据框
Col1 Col2
0 A (1000 EUR) C ( 3000 USD)
1 B (2000 CHF) D ( 4000 GBP)
我想把它转换成
Col1 Col2
0 1000 3000
1 2000 4000
我知道如何创建一个数据框(与索引)为1列,但不是为多个列
此代码产生此结果
Col1
0 1000
1 2000
a = z['Col1'].str.split('(').str[-1].str.split().str[0].apply(pd.to_numeric,errors='coerce')
如何修改上面的代码以添加col2(理想情况下使用矢量化而不是迭代)(因此理想情况下我不希望为每一列输入相同的代码)
可以使用apply函数将操作应用于两行中的所有元素。
# creates your dataframe
df = pd.DataFrame({'Col1':['A (1000 EUR)','B (2000 CHF)'], 'Col2':['C (3000 USD)', 'D (4000 GBP)']})
# use the apply function to apply your code to all elements of both columns
df = df.apply(lambda x: x.str.split('(').str[-1].str.split().str[0].apply(pd.to_numeric,errors='coerce'))
这把戏对我有用吗
我会使用df.applymap。与df.apply
的区别在于df.apply
将整个系列(行或列)作为参数,并应用一个函数,其中df.applymap
获取数据帧的每个元素并应用一个函数。试试这个:
df = df.applymap(lambda x: pd.to_numeric(str(x).split('(')[1].split()[0], errors='coerce'))
打印(df)
Col1 Col2
0 1000 3000
1 2000 4000
df.info()
<class 'pandas.core.frame.DataFrame'>
Int64Index: 2 entries, 0 to 1
Data columns (total 2 columns):
Col1 2 non-null int64
Col2 2 non-null int64
dtypes: int64(2)
memory usage: 48.0 bytes
None
您可以在每列上使用str.extract
,并使用pd.concat
根据结果构建新的数据帧:
x = np.concatenate([df[col].str.extract(r'(?<=\()\s*(\d+)') for col in df], axis=1)
pd.DataFrame(x, columns=df.columns)
Col1 Col2
0 1000 3000
1 2000 4000
怎么办? **添加详细示例如下***
我必须从二维坐标计算希尔伯特曲线上的距离。使用hilbertcurve包,我构建了自己的“hilbert”函数。坐标存储在数据帧(列1和列2)中。如您所见,我的函数在应用于两个值(test)时有效。 然而,它只是不工作时,应用行明智通过应用函数!这是为什么呢?我到底做错了什么?我需要一个额外的列“希尔伯特”,希尔伯特距离在列“col_1”和“col_2”中给出。 最后一个命令以错误结束: 谢谢你的
并将其应用于数据表的一列--这是我希望这样做的: 我还没有找到任何简单的方法,正在努力找出如何做到这一点。一定有一个更简单的方法,比将数据rame转换为和RDD,然后从RDD中选择行来获得正确的字段,并将函数映射到所有的值,是吗?创建一个SQL表,然后用一个sparkSQL UDF来完成这个任务,这更简洁吗?
我试图将此函数应用于pandas数据帧,以查看出租车上下车时间是否在我使用下面的arrivemin、ArriveMax变量创建的范围内。 如果时间真的在这个范围内,我想保留这一行。如果超出范围,我想从数据帧中删除它。 开始。时间,结束。时间等都是日期时间对象,所以时间功能应该工作正常。 继续获取此语法错误:
我从这个URL刮取了这个表: "https://www.patriotsoftware.com/blog/accounting/average-cost-living-by-state/" 看起来像这样: 然后我编写了这个函数来帮助我将字符串转换成整数: 当我只将函数应用于一列时,它就会工作。我在这里找到了关于在多个列上使用的答案:如何将函数应用于多个列 但我下面的代码不起作用,也不会产生错误:
我有一个派斯帕克数据帧 我想将其转换为与 pyspark.ml 一起使用。我可以使用字符串索引器将名称列转换为数字类别: 如何用StringIndexer(例如< code>name和< code>food,每个列都有自己的< code>StringIndexer)转换几个列,然后用VectorAssembler生成一个特征向量?还是必须为每一列创建一个< code>StringIndexer?