@@ -1020,7 +1020,7 @@ def test_replace_slice():
1020
1020
offsets = range (- 3 , 4 )
1021
1021
1022
1022
arr = pa .array ([None , '' , 'a' , 'ab' , 'abc' , 'abcd' , 'abcde' ])
1023
- series = arr .to_pandas ()
1023
+ series = arr .to_pandas (). astype ( object ). replace ({ np . nan : None })
1024
1024
for start in offsets :
1025
1025
for stop in offsets :
1026
1026
expected = series .str .slice_replace (start , stop , 'XX' )
@@ -1031,7 +1031,7 @@ def test_replace_slice():
1031
1031
assert pc .binary_replace_slice (arr , start , stop , 'XX' ) == actual
1032
1032
1033
1033
arr = pa .array ([None , '' , 'π' , 'πb' , 'πbθ' , 'πbθd' , 'πbθde' ])
1034
- series = arr .to_pandas ()
1034
+ series = arr .to_pandas (). astype ( object ). replace ({ np . nan : None })
1035
1035
for start in offsets :
1036
1036
for stop in offsets :
1037
1037
expected = series .str .slice_replace (start , stop , 'XX' )
@@ -2125,50 +2125,51 @@ def test_strftime():
2125
2125
for fmt in formats :
2126
2126
options = pc .StrftimeOptions (fmt )
2127
2127
result = pc .strftime (tsa , options = options )
2128
- expected = pa .array (ts .strftime (fmt ))
2128
+ # cast to the same type as result to ignore string vs large_string
2129
+ expected = pa .array (ts .strftime (fmt )).cast (result .type )
2129
2130
assert result .equals (expected )
2130
2131
2131
2132
fmt = "%Y-%m-%dT%H:%M:%S"
2132
2133
2133
2134
# Default format
2134
2135
tsa = pa .array (ts , type = pa .timestamp ("s" , timezone ))
2135
2136
result = pc .strftime (tsa , options = pc .StrftimeOptions ())
2136
- expected = pa .array (ts .strftime (fmt ))
2137
+ expected = pa .array (ts .strftime (fmt )). cast ( result . type )
2137
2138
assert result .equals (expected )
2138
2139
2139
2140
# Default format plus timezone
2140
2141
tsa = pa .array (ts , type = pa .timestamp ("s" , timezone ))
2141
2142
result = pc .strftime (tsa , options = pc .StrftimeOptions (fmt + "%Z" ))
2142
- expected = pa .array (ts .strftime (fmt + "%Z" ))
2143
+ expected = pa .array (ts .strftime (fmt + "%Z" )). cast ( result . type )
2143
2144
assert result .equals (expected )
2144
2145
2145
2146
# Pandas %S is equivalent to %S in arrow for unit="s"
2146
2147
tsa = pa .array (ts , type = pa .timestamp ("s" , timezone ))
2147
2148
options = pc .StrftimeOptions ("%S" )
2148
2149
result = pc .strftime (tsa , options = options )
2149
- expected = pa .array (ts .strftime ("%S" ))
2150
+ expected = pa .array (ts .strftime ("%S" )). cast ( result . type )
2150
2151
assert result .equals (expected )
2151
2152
2152
2153
# Pandas %S.%f is equivalent to %S in arrow for unit="us"
2153
2154
tsa = pa .array (ts , type = pa .timestamp ("us" , timezone ))
2154
2155
options = pc .StrftimeOptions ("%S" )
2155
2156
result = pc .strftime (tsa , options = options )
2156
- expected = pa .array (ts .strftime ("%S.%f" ))
2157
+ expected = pa .array (ts .strftime ("%S.%f" )). cast ( result . type )
2157
2158
assert result .equals (expected )
2158
2159
2159
2160
# Test setting locale
2160
2161
tsa = pa .array (ts , type = pa .timestamp ("s" , timezone ))
2161
2162
options = pc .StrftimeOptions (fmt , locale = "C" )
2162
2163
result = pc .strftime (tsa , options = options )
2163
- expected = pa .array (ts .strftime (fmt ))
2164
+ expected = pa .array (ts .strftime (fmt )). cast ( result . type )
2164
2165
assert result .equals (expected )
2165
2166
2166
2167
# Test timestamps without timezone
2167
2168
fmt = "%Y-%m-%dT%H:%M:%S"
2168
2169
ts = pd .to_datetime (times )
2169
2170
tsa = pa .array (ts , type = pa .timestamp ("s" ))
2170
2171
result = pc .strftime (tsa , options = pc .StrftimeOptions (fmt ))
2171
- expected = pa .array (ts .strftime (fmt ))
2172
+ expected = pa .array (ts .strftime (fmt )). cast ( result . type )
2172
2173
2173
2174
# Positional format
2174
2175
assert pc .strftime (tsa , fmt ) == result
0 commit comments