小编sea*_*ull的帖子

替换除数据帧中最后一个字符之外的所有字符

使用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)

替换命令以及掩码目标似乎正在删除未替换的值,我无法看到如何解决这个问题.

python regex string pandas

9
推荐指数
1
解决办法
1236
查看次数

Numpy np.fromstring() 没有按预期工作

我已将一个数组作为字符串保存在文本文件中,希望在从文件读取时能够将其转换回数组:

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

python numpy type-conversion

5
推荐指数
1
解决办法
4466
查看次数

计算每个数据帧行中的出现次数,然后创建最频繁的列

我试图比较一个数据帧的行中的三个浮点数(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.有什么建议?

python vectorization pandas

4
推荐指数
1
解决办法
52
查看次数

应用`Pandas.Timedelta.total_seconds`时的奇怪行为

我有一个带有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)

由于我希望执行聚合等并传播缺失/无效值,因此需要第二个示例的行为。这是一个错误吗?

python datetime timedelta pandas

4
推荐指数
1
解决办法
290
查看次数

有人可以解释 numpy 如何显示多维数组吗?

给出以下命令:

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 矩阵,暗示一个(深度,行,列)系统。

python arrays numpy

3
推荐指数
1
解决办法
590
查看次数

Java中的范围和包问题

我正在尝试编写一组将模拟旅行卡的类.我在访问另一个类中的成员时遇到问题.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)

java oop

1
推荐指数
1
解决办法
171
查看次数

非静态方法不能从静态上下文中引用

下面的代码出现在我正在尝试创建的包的主类中.它从名为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)

java oop static

1
推荐指数
1
解决办法
9838
查看次数