我有 2 个 pyspark 数据框,如所附文件所示。预期 df 和实际 df
在我的单元测试中,我试图检查两者是否相等。
我的代码是
expected = map(lambda row: row.asDict(), expected_df.collect())
actual = map(lambda row: row.asDict(), actaual_df.collect())
assert expected = actual
Run Code Online (Sandbox Code Playgroud)
由于两个 dfs 相同但行顺序不同,因此断言此处失败。比较此类 dfs 的最佳方法是什么?
在我的脚本中,我有df ['Time'],如下所示。
497 2017-08-06 11:00:00
548 2017-08-08 15:00:00
580 2017-08-10 04:00:00
646 2017-08-12 23:00:00
Name: Time, dtype: datetime64[ns]
Run Code Online (Sandbox Code Playgroud)
但是当我这样做
t1=pd.Timestamp(df['Time'][0])
Run Code Online (Sandbox Code Playgroud)
我收到这样的错误:
KeyError:0
我是否需要在这里进行任何类型转换,如果可以,那么如何解决?
我有这样的DF:
df['Time']
2017-08-06 11:00:00+00:00
2017-08-08 15:00:00+00:00
2017-08-10 04:00:00+00:00
2017-08-12 23:00:00+00:00
2017-08-08 15:00:00+00:00
Run Code Online (Sandbox Code Playgroud)
我想用条件切片
mask1=df['Time'] > datetime.datetime.strptime('2017-08-12', "%Y-%m-%d")
Run Code Online (Sandbox Code Playgroud)
我收到类似的错误
无法比较未过时的日期和可感知到的日期时间
我不得不以某种方式转换df['Time']为天真幼稚。
请帮我解决这个问题。
我正在阅读有关基于行为的新计算的博客,其中插入了新的col“ category”。
data = {'name': ['Jason', 'Molly', 'Tina', 'Jake', 'Amy'],
'age': [42, 52, 36, 24, 73],
'preTestScore': [4, 24, 31, 2, 3],
'postTestScore': [25, 94, 57, 62, 70]}
df = pd.DataFrame(data, columns = ['name', 'age', 'preTestScore', 'postTestScore'])
df['category'] = np.where(df['age']>=50, 'yes', 'no')
Run Code Online (Sandbox Code Playgroud)
它如何扩展到多种条件,如年龄小于20岁的孩子; 如果在21至40岁之间,则年轻; 如果高于40,则年龄较大
str我有一个和元素列表int,如下所示
L = [1, "a", "b", 1, 2, 1, "d", 1, "e", 4, 5, "f", "g", 2]
Run Code Online (Sandbox Code Playgroud)
我想总结两个字符串元素之间找到的数字,因此预期的输出结果如下。
[1, "a", "b", 4, "d", 1, "e", 9, "f", "g", 2]
Run Code Online (Sandbox Code Playgroud)
我想以Pythonic的方式解决这个问题。如何做到这一点?