python - 如果数据框有列名,是什么导致不同的时间函数?

标签 python pandas

我测试了这两个片段,df 除了df.columns 之外共享相同的结构,那么是什么导致它们之间的差异呢?我应该如何更改我的第二个代码段,例如,我应该始终使用 pandas.DataFrame.mul 还是使用其他方法来避免这种情况?

# test1
df = pd.DataFrame(np.random.randint(100, size=(10, 10))) \
    .assign(Count=np.random.rand(10))
df.iloc[:, 0:3] *= df['Count']
df
Out[1]:
           0          1          2   3   4   5   6   7   8   9     Count
0  26.484949  68.217006   4.902341  61  10  13  31  15  10  11  0.645974
1  56.845743  70.085965  28.106758  79  56  47  82  83  62  40  0.934480
2  33.590667  78.496281   1.634114  94   3  91  16  41  93  55  0.326823
3  51.031974  15.886152  26.145821  67  31  20  81  21  10   8  0.012706
4  47.156128  82.234199  10.458328  24   8  68  44  24   4  50  0.517130
5  18.733256  61.675649  23.531239  74  61  97  20  12   0  95  0.360815
6   4.521820  26.165427  26.145821  68  10  77  67  92  82  11  0.606739
7  24.547026  62.610129  23.531239  50  45  69  94  56  77  56  0.412445
8  52.969897  75.692843   9.804683  73  74   5  10  60  51  77  0.125309
9  21.963128  30.837825  19.609366  75   9  50  68  10  82  96  0.687966
#test2
df = pd.DataFrame(np.random.randint(100, size=(10, 10))) \
    .assign(Count=np.random.rand(10))
df.columns = ['find', 'a', 'b', 3, 4, 5, 6, 7, 8, 9, 'Count']
df.iloc[:, 0:3] *= df['Count']
df
Out[2]:
 find   a   b   3   4   5   6   7   8   9     Count
0   NaN NaN NaN  63  63  47  81   3  48  34  0.603953
1   NaN NaN NaN  70  48  41  27  78  75  23  0.839635
2   NaN NaN NaN   5  38  52  23   3  75   4  0.515159
3   NaN NaN NaN  40  49  31  25  63  48  25  0.483255
4   NaN NaN NaN  42  89  46  47  78  30   5  0.693555
5   NaN NaN NaN  68  83  81  87   7  54   3  0.108306
6   NaN NaN NaN  74  48  99  67  80  81  36  0.361500
7   NaN NaN NaN  10  19  26  41  11  24  33  0.705899
8   NaN NaN NaN  38  51  83  78   7  31  42  0.838703
9   NaN NaN NaN   2   7  63  14  28  38  10  0.277547

最佳答案

df.iloc[:,0:3] 是一个包含三个系列的数据框,名为 finda bdf['Count'] 是一个名为 Count 的序列。当您将它们相乘时,Pandas 会尝试匹配同名系列,但由于没有,它最终会为所有插槽生成 NaN 值。然后它将这些 NaN:s 分配回数据框。

认为.mul 与适当的axis= 一起使用是解决此问题的方法,但我对此可能是错误的。 .

关于python - 如果数据框有列名,是什么导致不同的时间函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70199268/

相关文章:

python - 根据键列合并 3 个 pandas

python - 高效地将值从一列替换为另一列 Pandas DataFrame

pandas - 如何提高pandas索引和设置值的速度

python - 为什么从 pandas DataFrame 中提取列作为列表并执行列表理解比使用 map 函数更快?

python - 混淆重新 : pandas copy of slice of dataframe warning

Python:在循环中将元素添加到numpy数组的第二轴

python - 如何创建同一类的多个对象,每个对象内部都有无限循环

python - 将日期从可读字符串转换为更标准的字符串

python - setdefault() 对 SOAP 水字典结果

python - 尝试进行 SDV(综合数据仓库)演示并收到错误 : TypeError: cannot astype a datetimelike from [datetime64[ns]] to [int32]