我有一个简单的问题。我有一个像这样的数据框
Column_4 Column_4
0 Data Data
1 102832 79639
2 50034 21058
3 38230 18963
4 34503 14216
我想要做的是将每列中的值除以从另一个数据帧(例如,此数据)派生的标量值。
0 1
0 103000.0 500.0
这就是我想发生的事情:
Column_4 Column_4
0 Data Data
1 102832/103000.0 79639/500.0
2 50034/103000.0 21058/500.0
3 38230/103000.0 18963/500.0
4 34503/103000.0 14216/500.0
我知道您可以将一个数据帧除以标量值,甚至将数据帧除以其他数据帧中的值(通过使用索引来匹配它们);但是,我还没有找到一种方法来将数据框的一列除以标量值,该标量值是使用上述示例中的熊猫从另一个数据框获得的。
编辑: 我的列(数据)中有一个字符串,因此已将其删除。这是新的数据框。
Column_4 Column_4
1 102832 79639
2 50034 21058
3 38230 18963
4 34503 14216
5 34219 11450
答案 0 :(得分:1)
您可以将第二个数据帧转换为列表并进行常规分割(大熊猫会将该分割广播到每一列)
# test data
import pandas as pd
df1 = pd.DataFrame({'a': [1,2,3], 'b': [4,5,6]})
df2 = pd.DataFrame({'c':[7], 'd':[8]})
#df1
# a b
#0 1 4
#1 2 5
#2 3 6
#df2
# c d
#0 7 8
res = df1[['a','b']]/df2.loc[0,['c','d']].tolist()
print(res)
# a b
#0 0.142857 0.500
#1 0.285714 0.625
#2 0.428571 0.750
答案 1 :(得分:1)
如果第二个df中只有一行:
df1 = pd.DataFrame({"col1":["data",100,200,300,400],
"col2":["data",200,300,400,500]})
df2 = pd.DataFrame({"col1":[100],
"col2":[200]})
print (df1.iloc[1:].astype(int)/df2.values)
col1 col2
0 1.0 1.0
1 2.0 1.5
2 3.0 2.0
3 4.0 2.5
答案 2 :(得分:1)
尝试一下:
import pandas as pd
import numpy as np
df1 = pd.DataFrame([[102832, 79639], [50034, 21058], [38230, 18963], [34503, 14216]], columns=['A', 'B'])
df1
A B
0 102832 79639
1 50034 21058
2 38230 18963
3 34503 14216
df2 = pd.DataFrame([[103000.0, 500.0]])
df2
0 1
0 103000.0 500.0
两个表中的列名必须相同
df1 / pd.DataFrame(np.repeat(df2.values, df1.shape[0], axis=0), columns=['A', 'B'])
A B
0 0.998369 159.278
1 0.485767 42.116
2 0.371165 37.926
3 0.334981 28.432
答案 3 :(得分:1)
设置数据后,您需要这样做:
df4['Column_4'][1:].astype(int) / df5['0'][0]
Out[363]:
1 0.998369
2 0.485767
3 0.371165
4 0.334981