使用Pandas删除字符串中的所有但最后一个句点,如下所示:
s = pd.Series(['1.234.5','123.5','2.345.6','678.9'])
counts = s.str.count('\.')
target = counts==2
target
0 True
1 False
2 True
3 False
dtype: bool
s = s[target].str.replace('\.','',1)
s
0 1234.5
2 2345.6
dtype: object
Run Code Online (Sandbox Code Playgroud)
然而,我想要的输出是:
0 1234.5
1 123.5
2 2345.6
3 678.9
dtype: object
Run Code Online (Sandbox Code Playgroud)
替换命令以及掩码目标似乎正在删除未替换的值,我无法看到如何解决这个问题.
我已将一个数组作为字符串保存在文本文件中,希望在从文件读取时能够将其转换回数组:
str_arr = "[0.01 0.01 0.01 0.01 0.01 0.01]"
num_arr = np.fromstring(str_arr,dtype = np.float64 ,count = 6,sep = ' ')
Run Code Online (Sandbox Code Playgroud)
结果是num_array:
array([-1.00000000e+000, 6.94819184e-310, 6.94819184e-310,
6.94818751e-310, 6.94818751e-310, 6.94818751e-310])
Run Code Online (Sandbox Code Playgroud)
我期待着一系列0.01s
我试图比较一个数据帧的行中的三个浮点数(500000x3),我希望这三个值相同或至少有两个.我想在它们并非完全不同的假设下选择最多出现的值.我目前尝试玩具的例子是这样的:
mydf
a b c
0 1 1 2
1 3 3 3
2 1 3 3
3 4 5 4
3 4 5 5
mydft = mydf.transpose()
counts=[]
for col in mydft:
counts.append(mydft[col].value_counts())
Run Code Online (Sandbox Code Playgroud)
我正在考虑循环计数并为每个计算选择最高值,但这非常慢并感觉到反熊猫.我也试过这个:
truth = mydf['a'] == mydf['b']
Run Code Online (Sandbox Code Playgroud)
意图保持评估为真的行,并对那些没有的行做一些事情,但我在真实事物中有1000个NaN值,显然NaN == NaN是False.有什么建议?
我有一个带有Timedelta类型列的pandas数据框。我使用groupby和一个单独的month列来按月创建这些分组Timdelta,然后尝试在触发该列的列上使用该agg函数min, max, meanTimedeltaDataError: No numeric types to aggregate
作为一种解决方案,我尝试使用total_seconds()函数以及apply()获取列的数字表示形式,但是对于我来说,行为似乎很奇怪,因为NaT我将Timedelta列中的值转换为,-9.223372e+09但是它们导致在标量上使用NaN时total_seconds()不使用apply()
一个最小的例子:
test = pd.Series([np.datetime64('nat'),np.datetime64('nat')])
res = test.apply(pd.Timedelta.total_seconds)
print(res)
Run Code Online (Sandbox Code Playgroud)
产生:
0 -9.223372e+09
1 -9.223372e+09
dtype: float64
Run Code Online (Sandbox Code Playgroud)
而:
res = test.iloc[0].total_seconds()
print(res)
Run Code Online (Sandbox Code Playgroud)
产量:
nan
Run Code Online (Sandbox Code Playgroud)
由于我希望执行聚合等并传播缺失/无效值,因此需要第二个示例的行为。这是一个错误吗?
给出以下命令:
np.ones((2,2,3))
Run Code Online (Sandbox Code Playgroud)
我得到以下
array([[[1., 1., 1.],
[1., 1., 1.]],
[[1., 1., 1.],
[1., 1., 1.]]])
Run Code Online (Sandbox Code Playgroud)
根据我阅读文档/博客等的理解,这是一个多维数组,它实际上是 3 个 2x2 矩阵的组合,因此我们有 2 列 2 行和 3 的“深度”维度,这意味着 numpy 使用 (row,column,depth ) 系统用于 3 维数组。
那么我应该如何解释终端中显示的内容,它似乎是 2 个 3x2 矩阵,暗示一个(深度,行,列)系统。
我正在尝试编写一组将模拟旅行卡的类.我在访问另一个类中的成员时遇到问题.WmBusPass类当前不会编译并提供错误消息"找不到符号 - 构造函数Journey(int,int,java.lang.String,int)".更一般地说,我不确定组织课程的最佳方法.将Journey课程作为WmBusPass的内部课程是否有意义?此外,我试图通过将类放入包中来解决我的组织问题,但是,我并不完全理解包的动态,它只会让我更加困惑.
WmBusPass.java
package buscard;
import java.util.ArrayList;
public class WmBusPass implements BusPass{
private String ID;
private String Name;
private String Address;
private double Balance;
public static ArrayList<Payment> payArray;
public static ArrayList<Journey> jArray;
public static int weekOfYear = 0;
public static int monthOfYear = 0;
public static int dayOfYear = 0;
public WmBusPass(String ID,String Name, String Address, ArrayList<Payment> payArray, ArrayList<Journey> jArray){
this.ID = ID;
this.Name = Name;
this.Address = Address;
Balance = 0;
this.payArray = payArray;
this.jArray = jArray;
} …Run Code Online (Sandbox Code Playgroud) 下面的代码出现在我正在尝试创建的包的主类中.它从名为Journey的帮助程序类引用对象和方法.在journeyCost星号标记的方法中调用方法时,我得到"非静态方法不能从静态上下文引用"错误.这使我感到困惑,因为我认为在第二行创建的Journey对象"thisJourney"构成了类的实例,因此意味着上下文不是静态的.谢谢,Seany.
public boolean journey(int date, int time, int busNumber, int journeyType){
Journey thisJourney = new Journey(date, time, busNumber, journeyType);
if (thisJourney.isInSequence(date, time) == false)
{
return false;
}
else
{
Journey.updateCurrentCharges(date);
thisJourney.costOfJourney = Journey.journeyCost(thisJourney);*****
Journey.dayCharge = Journey.dayCharge + thisJourney.costOfJourney;
Journey.weekCharge = Journey.weekCharge + thisJourney.costOfJourney;
Journey.monthCharge = Journey.monthCharge + thisJourney.costOfJourney;
Balance = Balance - thisJourney.costOfJourney;
jArray.add(thisJourney);
}
}
Run Code Online (Sandbox Code Playgroud)