我有这样的数据框:
A B C D E
0 2 3 4 8 7
1 4 7 5 9 4
2 3 4 5 7 2
3 8 9 1 3 7
Run Code Online (Sandbox Code Playgroud)
我需要做这样的事情:
if 'value in column A' == 2:
'value for this row in new column' = 'value from column B' + 'value from column C'
elif 'value in column A' == 4:
'value for this row in new column' = 'value from column B' + 'value from column D'
elif …Run Code Online (Sandbox Code Playgroud) 如果我有一个数据帧
df= pd.DataFrame(['a','b','c','d'],index=[0,0,1,1])
Run Code Online (Sandbox Code Playgroud)
0 0 a 0 b 1 c 1 d
如何根据下面的索引重塑数据帧,即
df= pd.DataFrame([['a','b'],['c','d']],index=[0,1])
Run Code Online (Sandbox Code Playgroud)
0 1 0 a b 1 c d
我有一个带有 True 和 False 值的 DataFrame。
A B C D 0 假 真 真 假 1 假 假 真 假 2 真真假假
我想用列名填充真值,用 0 填充假值。我该怎么做?
即得到结果为
A B C D 0 0 公元前 0 1 0 0 C 0 2 AB 0 0
我从具有多列的 CSV 文件加载一些数据。在我的 csv.reader 中,我有一个 IF 函数。我试图从特定列(开始日期)中获取最早的日期。
我首先加载数据:
for row in csv.reader(open('myFile.csv')):
if row[4] == '56886':
key = row[4] #key = (row[4], row[33][:4], row[4])
startDate = row[19]
Run Code Online (Sandbox Code Playgroud)
当我打印列 (startDate) 时,我得到了这个:
01)我尝试使用以下内容:
content = min(content)
print(content)
Run Code Online (Sandbox Code Playgroud)
我在终端得到了这个:
02)然后我尝试更改我的代码:
for row in csv.reader(open('myFile.csv',
parse_dates=['Start Date'],
usecols=['Start Date']))
if row[4] == '56886':
key = row[4] #key = (row[4], row[33][:4], row[4])
startDate = row[19]
Run Code Online (Sandbox Code Playgroud)
我收到了无效的语法错误。
03)我尝试将线路更改为:
pandas.read_csv('myFile.csv', parse_dates=['Start Date'], usecols=['Start Date'])
Run Code Online (Sandbox Code Playgroud)
我得到了同样的错误。
最好的解决方法是什么?到目前为止,我还没有找到解决方案。
考虑如下数据框
df = pd.DataFrame({'Questions': ['What are you doing?','What are you doing tonight?','What are you doing now?','What is your name?','What is your nick name?','What is your full name?','Shall we meet?',
'How are you doing?' ]})
Run Code Online (Sandbox Code Playgroud)
问题 0 你在做什么? 1 今晚你做什么? 2 你现在在做什么? 3 你叫什么名字? 4 你的昵称是什么? 5 你的全名是什么? 6 我们见面好吗? 7 你好吗?
如何将具有类似问题的数据框分组?即如何获得如下所示的组
for _, i in df.groupby('similarity')['Questions']:
print(i,'\n')
Run Code Online (Sandbox Code Playgroud)
6 我们见面好吗? 名称:问题,数据类型:对象 3 你叫什么名字? 4 你的昵称是什么? 5 你的全名是什么? 名称:问题,数据类型:对象 0 你在做什么? 1 今晚你做什么? 2 你现在在做什么? 7 你好吗? 名称:问题,数据类型:对象
这里提出了类似的问题,但不太清楚,所以没有回答这个问题
我每天都会在回答堆栈溢出中的大熊猫问题之前尝试我的解决方案.通常在两到三天后,我使用的jupyter笔记本将有n个单元格.除了通过删除当前的笔记本创建新笔记本之外,有没有办法一次删除所有单元格?
D D 一次删除一个单元格.
例如,如何从DataFrame中的标签获取列号。
import pandas as pd
from pandas import DataFrame
df = DataFrame({'key': ['b', 'b', 'a', 'c', 'a', 'b'],
'data1': range(6)},
index=['a1','a2','a3','a4','a5','a6'])
In[31]:df
Out[31]:
Run Code Online (Sandbox Code Playgroud)
数据1键 a1 0 b 2一1 a3 2 a a4 3 a5 4 a 6小时
如果我跑
df.iloc[2,1]
Run Code Online (Sandbox Code Playgroud)
它会返回“ a”。问题是,我只知道列标签是“键”,如何获取列号?然后我可以使用df.iloc。
您会发现,.ix在熊猫中已被弃用,否则我将只使用df.ix [2,'key']。
我只知道如何解决类似问题:从列号获取列标签。例如,
df.loc['a3',df.iloc[:,[1]].columns]
Run Code Online (Sandbox Code Playgroud) 我有一个像numpy数组
np.array([[1.0, np.nan, 5.0, 1, True, True, np.nan, True],
[np.nan, 4.0, 7.0, 2, True, np.nan, False, True],
[2.0, 5.0, np.nan, 3, False, False, True, np.nan]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
现在我想用key作为isnan对值进行排序?我怎样才能做到这一点?所以我最终会在阵列中
np.array([[1.0, 5.0, 1, True, True, True, np.nan, np.nan],
[4.0, 7.0, 2, True, False, True, np.nan, np.nan],
[2.0, 5.0, 3, False, False, True, np.nan, np.nan]], dtype=object)
Run Code Online (Sandbox Code Playgroud)
np.sort()没用.在pandas中可以实现相同的sorted功能,通过使用带有键的函数的已排序列作为pd.isnull(),但寻找速度的numpy答案.
在熊猫里
data = pd.DataFrame({'Key': [1, 2, 3], 'Var': [True, True, False], 'ID_1':[1, np.NaN, 2],
'Var_1': [True, np.NaN, False], 'ID_2': [np.NaN, 4, 5], 'Var_2': [np.NaN, …Run Code Online (Sandbox Code Playgroud) 我的例子可能很大,我的代码在这里:
import pandas as pd
import numpy as np
import io
t = """
name date
a 2005-08-31
a 2005-09-20
a 2005-11-12
a 2005-12-31
a 2006-03-31
a 2006-06-25
a 2006-07-23
a 2006-09-28
a 2006-12-21
a 2006-12-27
a 2007-07-23
a 2007-09-21
a 2007-03-15
a 2008-04-12
a 2008-06-21
a 2008-06-11
b 2005-08-31
b 2005-09-23
b 2005-11-12
b 2005-12-31
b 2006-03-31
b 2006-06-25
b 2006-07-23
b 2006-09-28
b 2006-12-21
b 2006-12-27
b 2007-07-23
b 2007-09-21
b 2007-03-15
b 2008-04-12
b 2008-06-21
b 2008-06-11 …Run Code Online (Sandbox Code Playgroud) 我有一个1650行和1275列的numpy数组,包含0和255.我想得到行中每个第一个零的索引并将其存储在一个数组中.我用循环来实现这一点.这是示例代码
#new_arr is a numpy array and k is an empty array
for i in range(new_arr.shape[0]):
if not np.all(new_arr[i,:]) == 255:
x = np.where(new_arr[i,:]==0)[0][0]
k.append(x)
else:
k.append(-1)
Run Code Online (Sandbox Code Playgroud)
1650行需要大约1.3秒.有没有其他方法或函数以更快的方式获取索引数组?
我是文本挖掘的新手,我需要从*.txt文件中提取日期并对它们进行排序.日期在句子(每一行)之间,其格式可能如下:
04/20/2009; 04/20/09; 4/20/09; 4/3/09
Mar-20-2009; Mar 20, 2009; March 20, 2009; Mar. 20, 2009; Mar 20 2009;
20 Mar 2009; 20 March 2009; 20 Mar. 2009; 20 March, 2009
Mar 20th, 2009; Mar 21st, 2009; Mar 22nd, 2009
Feb 2009; Sep 2009; Oct 2010
6/2008; 12/2009
2009; 2010
Run Code Online (Sandbox Code Playgroud)
如果缺少那一天,请考虑1号,如果缺少月份,请考虑1月份.
我的想法是提取所有日期并将其转换为mm/dd/yyyy格式.但是我对如何找到和替换paterns有点怀疑.这就是我所做的:
import pandas as pd
doc = []
with open('dates.txt') as file:
for line in file:
doc.append(line)
df = pd.Series(doc)
df2 = pd.DataFrame(df,columns=['text'])
def myfunc(x):
if len(x)==4:
x = '01/01/'+x …Run Code Online (Sandbox Code Playgroud) 我需要解码并加载到DB,这是一个以下列格式到达的字符串:
"[{u'date': 1508760000000, u'value': 0}, {u'date': 1509364800000, u'value': Decimal('5.989999771118164')}, {u'date': 1509969600000, u'value': Decimal('5.989999771118164')}, {u'date': 1510574400000, u'value': Decimal('9.579999923706055')}]"
Run Code Online (Sandbox Code Playgroud)
目前,这是我用来将其转换为数据帧的代码:
import pandas as pd
import json
#json for example:
my_json="""[{u'date': 1508760000000, u'value': 0}, {u'date': 1509364800000, u'value': Decimal('5.989999771118164')}, {u'date': 1509969600000, u'value': Decimal('5.989999771118164')}, {u'date': 1510574400000, u'value': Decimal('9.579999923706055')}]"""
my_json=my_json[1:-1]
my_json=my_json.replace("u'","'")
my_json=my_json.replace("'",'"')
my_json=my_json.replace('Decimal("','')
my_json=my_json.replace('")','')
my_json=my_json.replace(', {','~ {')
my_json_list=my_json.split('~')
my_dict_list=[json.loads(row) for row in my_json_list]
df=pd.DataFrame(my_dict_list)
Run Code Online (Sandbox Code Playgroud)
是否有更短/更优雅的方式来执行此操作?
我在Python中使用pandas.
import pandas as pd
假设我有一个数据帧
pd.DataFrame({"A": [1,2,3], "B": [3,2,1]})
Run Code Online (Sandbox Code Playgroud)
我想为每列创建三个副本,并将列命名为A1到A4和B1到B4.期望输出的示例:
pd.DataFrame({"A1": [1,2,3], "A2": [1,2,3], "A3": [1,2,3], "A4": [1,2,3], "B1": [3,2,1], "B2": [3,2,1], "B3": [3,2,1], "B4": [3,2,1]})
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
python ×13
pandas ×10
dataframe ×4
date ×2
numpy ×2
csv ×1
group-by ×1
json ×1
jupyter ×1
mask ×1
nltk ×1
similarity ×1
string ×1
text-mining ×1
time-series ×1