我想知道与下面的方法相比是否有更好的方法来计算 Pandas 中父级总数的份额:非常感谢您的帮助!
raw_data = {'product': ['A', 'A', 'A', 'B', 'B', 'B', 'C', 'C', 'C'],
'revenue': [10,20,20,0,50,50,0,0,30]}
df = pd.DataFrame(raw_data, columns = ['product', 'revenue'])
unique_values = df['product'].unique()
L = pd.DataFrame ()
for value in unique_values:
small_df = df[df['product']==value]
small_df['shares'] = small_df['revenue']/small_df['revenue'].sum()
L = L.append(small_df, ignore_index=True)
print(L)
Run Code Online (Sandbox Code Playgroud) 循环遍历带有字符串的数据帧的最佳方法是什么,我想将其拆分为多行同时保留另一个值?
输入:
genres revenue
action|comedy|drama 5000
action|romance 10000
Run Code Online (Sandbox Code Playgroud)
输出:
genres revenue
action 5000
comedy 5000
drama 5000
action 10000
romance 10000
Run Code Online (Sandbox Code Playgroud) 我有两种帐号,所有帐号都是字符串:其中一些有leading zeros
,其他帐号已正确导入,没有前导零;
如何在不修剪正常帐号的情况下摆脱前导零?
带有前导零的那些有点:
0000012345678
没有前导零的那些是:
1345678
如何在不修剪所有帐号的情况下在Impala中执行此操作?从我所看到的情况下,这些记录中始终有5个前导零,其中前导零.
num_list_1 = [1,2,3,4]
Run Code Online (Sandbox Code Playgroud)
num_list_1 = 10的总和
num_list_2 = [5,6,7,8]
Run Code Online (Sandbox Code Playgroud)
num_list_2 = 26的总和
我将如何能够总结一起num_list_1
和num_list_2
.
我自己尝试过这样做,因为它是一个列表,它不会让我连接它们.
我在熊猫中有2个数据帧
df1
date tank quantity
2018-04-01 1 234
2018-04-02 1 343
2018-04-03 1 334
2018-04-04 1 143
2018-04-05 1 237
2018-04-06 1 234
2018-04-07 1 last observation
2018-04-01 2 234
2018-04-02 2 343
2018-04-03 2 334
2018-04-04 2 143
2018-04-05 2 237
2018-04-06 2 234
2018-04-07 2 last observation
df2
date tank quantity
2018-04-01 1 221
2018-04-02 1 200
2018-04-03 1 100
2018-04-04 1 123
2018-04-05 1 234.56
2018-04-06 1 324.67
2018-04-07 1 324.67
2018-04-01 2 221
2018-04-02 2 221.23 …
Run Code Online (Sandbox Code Playgroud) 我正在尝试将一些数据记录到本地文件中,如下所示:
import logging
# dont know if format parameter is really necessary here
logging.basicConfig(filename='logs/server_logs.log', filemode='a', format='%(message)s')
logging.info("some data")
Run Code Online (Sandbox Code Playgroud)
此代码确实生成了 0 kb 的“server_logs.log”文件,但它保持为空,没有附加任何文本。难道我做错了什么?
我有如下数据框:
df = pd.DataFrame({'$a':[1,2], '$b': [10,20]})
Run Code Online (Sandbox Code Playgroud)
我尝试创建一个允许动态更改列名的函数,我可以在函数中输入旧列名和新列名,如下所示:
def rename_column_name(df, old_column, new_column):
df = df.rename({'{}'.format(old_column) : '{}'.format(new_column)}, axis=1)
return df
Run Code Online (Sandbox Code Playgroud)
此功能仅适用于我只有一个输入的情况,如下所示:
new_df = rename_column_name(df, '$a' , 'a')
Run Code Online (Sandbox Code Playgroud)
这给了我这个 new_df 如下:
new_df = pd.DataFrame({'a':[1,2], '$b': [10,20]})
Run Code Online (Sandbox Code Playgroud)
但是,我想创建一个函数,允许我根据自己的喜好对多列/一列进行更改:
new_df = rename_column_name(df, ['$a','$b'] , ['a','b'])
Run Code Online (Sandbox Code Playgroud)
并获得如下所示的 new_df
new_df = pd.DataFrame({'a':[1,2], 'b': [10,20]})
Run Code Online (Sandbox Code Playgroud)
那么,如何使我的函数更加动态,以允许我自由输入多个/一个列名称并重命名它们?
我需要帮助从字典(python3)中获取一些输出:
{'horse': ['brown', 'black'], 'duck': ['brown', 'black', 'brown', 'grey', 'brown']}
Run Code Online (Sandbox Code Playgroud)
需要的输出:
black horse: 1
brown horse: 1
grey horse: 0
black duck: 1
brown duck: 3
grey duck: 1
Run Code Online (Sandbox Code Playgroud)
有人可以提供解决方案吗?
双方pandas.Series.map
并pandas.Series.replace
似乎给了相同的结果。是否有理由使用一个而不是另一个?例如:
import pandas as pd
df = pd.Series(['Yes', 'No'])
df
0 Yes
1 No
dtype: object
Run Code Online (Sandbox Code Playgroud)
df.replace(to_replace=['Yes', 'No'], value=[True, False])
0 True
1 False
dtype: bool
Run Code Online (Sandbox Code Playgroud)
df.map({'Yes':True, 'No':False})
0 True
1 False
dtype: bool
Run Code Online (Sandbox Code Playgroud)
df.replace(to_replace=['Yes', 'No'], value=[True, False]).equals(df.map({'Yes':True, 'No':False}))
True
Run Code Online (Sandbox Code Playgroud) 想象一下我有熊猫数据框:
列 1 列 2
A D
B E
C F
Run Code Online (Sandbox Code Playgroud)
如何以这种形式获取结果数据框?
柱子
A
D
B
E
C
F
Run Code Online (Sandbox Code Playgroud)